用Python清理收藏夹里已失效的网站

news/2024/5/21 0:35:46/文章来源:https://blog.csdn.net/chen801090/article/details/103870429

失效的书签们

我们日常浏览网站的时候,时不时会遇到些新奇的东西( 你懂的.jpg ),于是我们就默默的点了个收藏或者加书签。然而当我们面对成百上千的书签和收藏夹的时候,总会头疼不已……

用Python清理收藏夹里已失效的网站

 

尤其是昨天还在更新的程序设计博客,今天就挂了永不更新。或者是昨天看的起劲的电影网站,今天直接404。失效页面这么多,每次我打开才知道失效了,并且需要手动删除,这能是一个程序员干的事情吗?

可是无论是Google浏览器还是国内浏览器,最多也就提供一个对于收藏夹的备份服务,那只能Python走起了。

用Python清理收藏夹里已失效的网站

 

Python支持的收藏夹文件格式

对于收藏夹提供的支持很少,主要还是因为收藏夹藏在浏览器里面,我们只能手动导出htm文件进行管理

用Python清理收藏夹里已失效的网站

 

用Python清理收藏夹里已失效的网站

 

用Python清理收藏夹里已失效的网站

 

用Python清理收藏夹里已失效的网站

 

内容比较简单,对前端没什么了解的我,也可以很明显看出其中的树形结构和内在逻辑。

固定格式 网址 固定格式 页面名 固定格式

很简单的想到了正则匹配,其中有两个子串。提取出来再挨个访问,看看哪个失效了,就删除,就能获得清理后的收藏夹了。

读取收藏夹文件

path="C:\\Users\\XU\\Desktop"fname="bookmarks.html"os.chdir(path)bookmarks_f=open(fname,"r+",encoding='UTF-8')booklists=bookmarks_f.readlines()bookmarks_f.close()

因为对于前端的不熟悉,这个导出的收藏夹可以抽象的分成

  • 结构代码
  • 保存网页书签的关键代码

其中结构代码我们不能动,要原封不动的保留,而保存网页书签的关键代码,我们要提取内容并且进行判断保留和删除。

所以这里采用readlines函数,每行读取,单独判断。

正则匹配

pattern=r'HREF="(.*?)".*?>(.*?)</A>'whilelen(booklists)>0:bookmark=booklists.pop(0)detail=re.search(pattern,bookmark)

如果是关键代码:提取出的子串在 detail.group(1) 和 detail.group(2) 里面

而如果是结构代码:detail == None

访问页面

importrequestsr=requests.get(detail.group(1),timeout=500)

编代码尝试之后发现会有这四种情况

  • r.status_code == requests.codes.ok
  • r.status_code==404
  • r.status_code!=404 && 无法访问 (可能是屏蔽爬虫,建议保留)
  • requests.exceptions.ConnectionError

类似知乎、简书基本都反爬了,所以简单的get还不能有效访问,细节不值得大费周章,直接保留就好。而error,直接用try抛出异常就好,不然程序会停止运行。

添加逻辑后:

whilelen(booklists)>0:bookmark=booklists.pop(0)detail=re.search(pattern,bookmark)ifdetail:#print(detail.group(1)+"----"+detail.group(2))try:#访问r=requests.get(detail.group(1),timeout=500)#如果可则添加ifr.status_code==requests.codes.ok:new_lists.append(bookmark)print("ok------保留:"+detail.group(1)+""+detail.group(2))else:if(r.status_code==404):print("不可访问删除:"+detail.group(1)+""+detail.group(2)+'错误码'+str(r.status_code))else:print("其他原因保留:"+detail.group(1)+""+detail.group(2)+'错误码'+str(r.status_code))new_lists.append(bookmark)except:print("不可访问删除:"+detail.group(1)+""+detail.group(2))#new_lists.append(bookmark)else:#没匹配到是结构语句new_lists.append(bookmark)

程序执行情况

用Python清理收藏夹里已失效的网站

 

导出htm

bookmarks_f=open('new_'+fname,"w+",encoding='UTF-8')bookmarks_f.writelines(new_lists)bookmarks_f.close()

导入浏览器

用Python清理收藏夹里已失效的网站

 

实际应用于我的浏览器

用Python清理收藏夹里已失效的网站

 

确实有很多电影网都失效了,通过Python能够一键清理其中无法访问的书签。人生苦短,Python 的确可以让生活更高效~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_747903.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

织梦怎么样备份网站

很多用织梦的朋友不知道怎么备份网站&#xff0c;还有些朋友备份网站的方式不对。当遇到网站被黑、服务器到期等关键时刻&#xff0c;导致数据丢失&#xff0c;网站不能用。新搭建网站就得一切从头再来&#xff0c;找技术恢复&#xff0c;又是一笔不小的开支。这是一种无形的损…

网市场云建站 v4.9 更新,增加网站子账户

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; 网市场云建站系统&#xff0c;结合云技术&#xff0c;一台2核4G服务器可以建立超过4万个网站&#xff01;打破传统建站的高成本&#xff0c;让价格不再是阻碍的门槛&#xff0c;让每个人都能有自…

Python_爬虫_爬取好大夫网站_数据清洗部分

1.前言 通过对好大夫网站内容的爬取&#xff0c;我们已经收集到好大夫的相关数据&#xff0c;并将其存入excel表中。之所以先存入excel表中&#xff0c;是因为有很多是非结构化数据&#xff0c;需要进行数据清理后在进行保存&#xff0c;excel中有很多的功能能够帮助进行数据清…

使用Apache服务部署静态网站。

1、安装Apache服务程序&#xff0c;命令后面的Apache服务的软件包名称为httpd。2、httpd服务程序并将其加入到开机启动项中3、在浏览器&#xff08;这里以Firefox浏览器为例&#xff09;的地址栏中输入http://127.0.0.1并按回车键&#xff0c;就可以看到用于提供Web服务的httpd…

php特级课---1、网站大访问量如何解决

php特级课---1、网站大访问量如何解决 一、总结 一句话总结&#xff1a; 负载均衡和冗余技术 1、负载均衡和冗余技术是一回事么&#xff1f; 并不是&#xff1a;负载均衡是用户分流&#xff1b;冗余技术是避免出现单点故障 负载均衡&#xff1a;将不同的用户分流到不同的服务器…

python实战教程:7万网站用户行为大数据的分析

今天的教程有点长&#xff0c;耐心点看完&#xff0c;你会有收获的。基础薄弱的伙伴&#xff0c;不清楚的可以留言&#xff0c;要视频学习教程的&#xff0c;可以留言&#xff01; 7万网站用户行为大数据分析 数据分析师&#xff0c;是通过数据对业务团队决策、公司管理层的决…

手把手教你做毕业设计:基于JSP+MySQL的简单校园新闻网站(1)

系列教程来了&#xff01;毕业设计头大的伙伴&#xff0c;看过来了&#xff01;基础薄弱的伙伴&#xff0c;需要视频教程的&#xff0c;可以留言&#xff0c;我整理后发大家&#xff01; 整体流程 做一个项目&#xff0c;首先是需求分析&#xff0c;将要做的东西说明白。 然后…

手把手教你做毕设计系列:基于JSP+MySQL的简单校园新闻网站(3)

系列教程&#xff08;2&#xff09;下一期出&#xff0c;保存的文件一下子打不开了&#xff0c;下期更新哈&#xff01; 新建数据库 使用Navicat新建数据库shcoolnews。 为了保存管理员用户名、密码&#xff0c;新建user表&#xff0c;结构如下图。 简单解释下&#xff0c;i…

jquery找到第几个字符_10个可以找到jQuery承包商的网站

jquery找到第几个字符作为一名技能娴熟的前端Web开发人员&#xff0c;您可以选择以自由职业者&#xff0c;承包商或临时或永久任职的身份独立从事工作 。 或者&#xff0c;您可能只想在业余时间通过在线寻求一些项目工作来提高自己的技能。 因此&#xff0c;今天我列出了一些地…

10个可以找到jQuery承包商的网站

作为一名技能娴熟的前端Web开发人员&#xff0c;您可以选择以自由职业者&#xff0c;承包商或临时或永久任职的身份独立从事工作 。 或者&#xff0c;您可能只想在业余时间通过在线寻求一些项目工作来提高自己的技能。 因此&#xff0c;今天我列出了一些您可能会找到以jQuery /…

portfolio r语言_jQuery Mobile Portfolio网站模板

portfolio r语言我已经为jQuery4u博客读者免费开发了用于个人投资组合网站的基本jQuery Mobile模板 &#xff01; :)使用此模板的初始版本&#xff0c;功能特定于投资组合&#xff0c;您可以使用个人简历&#xff0c;投资组合图片库和联系表创建基本的移动投资组合网站。 这只是…

Python爬虫:爬取需要登录的网站

不少伙伴学爬虫&#xff0c;这就出一期Python爬虫教程&#xff0c;文末总结的有视频教程&#xff0c;自己按需学习哈&#xff01; 爬虫在采集网站的过程中&#xff0c;部分数据价值较高的网站&#xff0c;会限制访客的访问行为。这种时候建议通过登录的方式&#xff0c;获取目…

创意网站精选

2019独角兽企业重金招聘Python工程师标准>>> https://gomockingbird.com/ framework my life to a professioner http://doubanmash.com/ doubanmash http://alphatown.com/ 阿尔法城,模拟网上商品城&#xff0c;做的确实不错。 http://c2.com/cgi/wiki?DesignP…

政府与金融行业网站为何必须安装SSL证书?

在了解SSL证书对于政府与金融行业网站的重要性之前&#xff0c;我们先来了解一下SSL证书是什么&#xff1f;根据百度百科上的解释&#xff0c;SSL证书是数字证书的一种&#xff0c;类似于驾驶证、护照和营业执照的电子副本。因为配置在服务器上&#xff0c;也称为SSL服务器证书…

【网站工具】PHPNow,PHPMyadmin,Apache,IIS,MySQL

近期在学习网站建站的一些基本知识&#xff0c;遇到几个工具 PHPNow&#xff0c;改名为servkit http://servkit.org/ 优点&#xff1a;适合新手快速入门&#xff0c;绿色版&#xff0c;免费 缺点&#xff1a; 1、只有中文版&#xff0c;英文操作系统就乱码啦 2、Apache可…

响应式网站设计_响应式网站的设计体验

响应式网站设计开始之前 响应式Web设计旨在确保网站的布局和内容流畅地扩展到可用的屏幕空间。 这是将投资集中在改善网站内容和用户功能上的绝妙方法&#xff0c;同时无论用户使用什么设备和屏幕大小来访问网站&#xff0c;都可确保用户获得良好的体验。 如果您没有阅读本系列…

响应式网站的设计体验

开始之前 响应式Web设计旨在确保网站的布局和内容流畅地扩展到可用的屏幕空间。 这是将您的投资集中在改善网站内容和用户功能上的一种绝佳方法&#xff0c;同时无论用户使用什么设备和屏幕大小来访问您的网站&#xff0c;都可以确保他们获得良好的体验。 如果您没有阅读本系列…

网站解密:从零开始学建站

为什么80%的码农都做不了架构师&#xff1f;>>> 网站解密&#xff1a;从零开始学建站 本书是为站长群体编写的一本入门级的书&#xff0c;它的定位是&#xff1a;对网站制作不清楚、对网站程序不了解、想成为一名站长的人。从基本的网站概念到一个网站上线所涉…

免费建站系统,Joomla 3.9.5发布

Joomla 3.9.5现已推出。这是针对3.x系列Joomla的安全修复程序版本&#xff0c;它解决了三个安全漏洞&#xff0c;包含20多个错误修复和改进。什么是3.9.5&#xff1f; Joomla 3.9.5包含三个安全漏洞修复程序以及一些错误和改进&#xff0c;包括&#xff1a; 安全问题已修复 低优…

【Python】Learn Python the hard way, ex50 第一个网站

利用lpthw.web框架实现"Hello World"网页版&#xff0c;代码如下&#xff1a; import weburls (/, index)app web.application(urls, globals())render web.template.render(templates/)class Index:def GET(self):greeting Hello Worldreturn render.index(gree…