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


Posted in Python onDecember 03, 2019

失效的书签们

我们日常浏览网站的时候,时不时会遇到些新奇的东西( 你懂的.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="(.*?)" rel="external nofollow" .*?>(.*?)</A>'
while len(booklists)> 0 :
bookmark = booklists.pop( 0 )
detail = re.search(pattern, bookmark)

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

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

访问页面

import requests
r = 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抛出异常就好,不然程序会停止运行。

添加逻辑后: (代码可左右拖动)

while len ( booklists )>0:
= booklists.pop( 0 )
detail = re.search(pattern, bookmark)
if detail:
#print(detail.group(1) +"----"+ detail.group(2))
try :
#访问
r = requests. get (detail. group ( 1 ),timeout= 500 )
#如果可则添加
if r.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能够一键清理其中无法访问的书签。人生苦短,P ython 的确可以让生活更高效~

总结

以上所述是小编给大家介绍的使用 Python 清理收藏夹里已失效的网站,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python操作Access数据库基本步骤分析
Sep 19 Python
Python实现二维数组输出为图片
Apr 03 Python
和孩子一起学习python之变量命名规则
May 27 Python
基于pandas将类别属性转化为数值属性的方法
Jul 25 Python
CentOS下Python3的安装及创建虚拟环境的方法
Nov 28 Python
Python数据类型之List列表实例详解
May 08 Python
Python Django 实现简单注册功能过程详解
Jul 29 Python
pytorch之ImageFolder使用详解
Jan 06 Python
详解python 破解网站反爬虫的两种简单方法
Feb 09 Python
python的scipy.stats模块中正态分布常用函数总结
Feb 19 Python
PyMongo 查询数据的实现
Jun 28 Python
Python利用zhdate模块实现农历日期处理
Mar 31 Python
Python常用模块os.path之文件及路径操作方法
Dec 03 #Python
Python中顺序表原理与实现方法详解
Dec 03 #Python
python双向链表原理与实现方法详解
Dec 03 #Python
Python读取实时数据流示例
Dec 02 #Python
简单了解python元组tuple相关原理
Dec 02 #Python
python实现智能语音天气预报
Dec 02 #Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 #Python
You might like
B2K与车机的中波PK
2021/03/02 无线电
967 个函式
2006/10/09 PHP
php 执行系统命令的方法
2009/07/07 PHP
PHP类的反射用法实例
2014/11/03 PHP
常用PHP数组排序函数归纳
2016/08/08 PHP
PHP实现QQ快速登录的方法
2016/09/28 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
laravel实现上传图片并在页面显示的例子
2019/10/14 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
JS倒计时代码汇总
2014/11/25 Javascript
Lua表达式和控制结构学习笔记
2014/12/15 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
bootstrap表格分页实例讲解
2016/12/30 Javascript
JavaScript仿微信(电话)联系人列表滑动字母索引实例讲解(推荐)
2017/08/16 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
js 实现在2d平面上画8的方法
2018/10/10 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
JavaScript this指向相关原理及实例解析
2020/07/10 Javascript
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python 实现数据库(SQL)更新脚本的生成方法
2017/07/09 Python
Python语言实现百度语音识别API的使用实例
2017/12/13 Python
python读取与写入csv格式文件的示例代码
2017/12/16 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
Python 继承,重写,super()调用父类方法操作示例
2019/09/29 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
Python fileinput模块如何逐行读取多个文件
2020/10/05 Python
Pycharm同步远程服务器调试的方法步骤
2020/11/04 Python
基于 HTML5 WebGL 实现的医疗物流系统
2019/10/08 HTML / CSS
HTML5 SEO优化的一些建议
2020/08/27 HTML / CSS
Solaris操作系统的线程机制
2012/12/23 面试题
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
运动会入场口号
2014/06/07 职场文书