使用 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 相关文章推荐
使用rpclib进行Python网络编程时的注释问题
May 06 Python
Django框架中方法的访问和查找
Jul 15 Python
Python设计模式编程中Adapter适配器模式的使用实例
Mar 02 Python
python 循环读取txt文档 并转换成csv的方法
Oct 26 Python
pymongo中group by的操作方法教程
Mar 22 Python
Python中拆分字符串的操作方法
Jul 23 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
用Cython加速Python到“起飞”(推荐)
Aug 01 Python
python安装本地whl的实例步骤
Oct 12 Python
Python中Cookies导出某站用户数据的方法
May 17 Python
Python os和os.path模块详情
Apr 02 Python
解决IDEA翻译插件Translation报错更新TTK失败不能使用
Apr 24 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
十大感人催泪爱情动漫 第一名至今不忍在看第二遍
2020/03/04 日漫
PHP与javascript对多项选择的处理
2006/10/09 PHP
PHP实现的限制IP投票程序IP来源分析
2016/05/04 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
JavaScript弹簧振子超简洁版 完全符合能量守恒,胡克定理
2009/10/25 Javascript
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
原始的js代码和jquery对比体会
2013/09/10 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
原生js实现图片放大缩小计时器效果
2017/01/20 Javascript
JavaScript、C# URL编码、解码总结
2017/01/21 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
在vue-cli中组件通信的方法
2017/12/16 Javascript
vue .sync修饰符的使用详解
2018/06/15 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
原生JS实现京东查看商品点击放大
2020/12/21 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
python操作excel的方法
2018/08/16 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
sklearn-SVC实现与类参数详解
2019/12/10 Python
代码总结Python2 和 Python3 字符串的区别
2020/01/28 Python
Python持续监听文件变化代码实例
2020/07/22 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
eBay瑞士购物网站:eBay.ch
2018/12/24 全球购物
如何写一份好的自荐信
2014/01/02 职场文书
关于环保的演讲稿
2014/05/10 职场文书
干货分享:推荐信写作技巧!
2019/06/21 职场文书
Nginx的rewrite模块详解
2021/03/31 Servers
Go各时间字符串使用解析
2021/04/02 Golang