使用 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正则表达式操作指南(re使用)
Sep 06 Python
python 中文乱码问题深入分析
Mar 13 Python
Python中无限元素列表的实现方法
Aug 18 Python
web.py在模板中输出美元符号的方法
Aug 26 Python
介绍Python中的一些高级编程技巧
Apr 02 Python
Python运算符重载用法实例
May 28 Python
python基于xmlrpc实现二进制文件传输的方法
Jun 02 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
linux安装Python3.4.2的操作方法
Sep 28 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
详解Python自动化之文件自动化处理
Jun 21 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
PHP删除特定数组内容并且重建数组索引的方法.
2011/03/25 PHP
php session的锁和并发
2016/01/22 PHP
jQuery 解析xml文件
2009/08/09 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
JS 控件事件小结
2012/10/31 Javascript
cookie 最近浏览记录(中文escape转码)具体实现
2013/06/08 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
设计模式中的facade外观模式在JavaScript开发中的运用
2016/05/18 Javascript
Nodejs下用submit提交表单提示cannot post错误的解决方法
2016/11/21 NodeJs
js图片延迟加载(Lazyload)三种实现方式
2017/03/01 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
[06:04]DOTA2国际邀请赛纪录片:Just For LGD
2013/08/11 DOTA
[05:37]DOTA2-DPC中国联赛 正赛 Elephant vs iG 选手采访
2021/03/11 DOTA
python中日期和时间格式化输出的方法小结
2015/03/19 Python
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
numpy排序与集合运算用法示例
2017/12/15 Python
Python中property属性实例解析
2018/02/10 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python+OpenCV+图片旋转并用原底色填充新四角的例子
2019/12/12 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
手把手教你用纯css3实现轮播图效果实例
2017/05/04 HTML / CSS
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
Html5自定义字体解决方法
2019/10/09 HTML / CSS
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
英国最好的温室之家:Greenhouses Direct
2019/07/13 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
自我鉴定总结
2014/03/24 职场文书
公证委托书
2014/08/01 职场文书
琅琊山导游词
2015/02/05 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
辞职信怎么写?你都知道吗?
2019/06/24 职场文书