我们日常浏览网站的时候,时不时会遇到些新奇的东西(<强>你懂的jpg 强>),于是我们就默默的点了个收藏或者加书签然。而当我们面对成百上千的书签和收藏夹的时候,总会头疼不已……
尤其是昨天还在更新的程序设计博客,今天就挂了永不更新。或者是昨天看的起劲的电影网站,今天直接404。失效页面这么多,每次我打开才知道失效了,并且需要手动删除,这能是一个程序员干的事情吗?
可是无论是谷歌浏览器还是国内浏览器,最多也就提供一个对于收藏夹的备份服务,那只能Python走起了。
<强> Python支持的收藏夹文件格式强>
对于收藏夹提供的支持很少,主要还是因为收藏夹藏在浏览器里面,我们只能手动导出htm文件进行管理
内容比较简单,对前端没什么了解的我,也可以很明显看出其中的树形结构和内在逻辑。
<代码>固定格式网址固定格式页面名固定格式代码>
很简单的想到了正则匹配,其中有两个子串。提取出来再挨个访问,看看哪个失效了,就删除,就能获得清理后的收藏夹了。
<强>读取收藏夹文件强>
路径=" C: \ \用户许\ \ \ \桌面” ?" bookmarks.html " os.chdir(路径) bookmarks_f=开放(帧,“r +”,编码=皍tf - 8”) 书目=bookmarks_f.readlines () bookmarks_f.close ()
因为对于前端的不熟悉,这个导出的收藏夹可以抽象的分成
-
<李>结构代码李>
<李>保存网页书签的关键代码李>
其中结构代码我们不能动,要原封不动的保留,而保存网页书签的关键代码,我们要提取内容并且进行判断保留和删除。
所以这里采用readline函数,每行读,取单独判断。
<强>正则匹配强>
模式=r 'href=" https://www.yisu.com/zixun/(. * ?)“rel=巴獠縩ofollow”。* & # 63;祝辞(* & # 63;)& lt;/A>” len(书目)比;0: 书签=书目。流行(0) 细节=re.search(模式、书签)
如果是关键代码:提取出的子串在detail.group(1)和detail.group(2)里面
而如果是结构代码:细节==没有
<强>访问页面强>
进口的要求 r=请求。get(细节。组(1 ),超时=500 )
编代码尝试之后发现会有这四种情况
r。status_code==requests.codes.ok r.status_code==404 r.status_code !=404,,无法访问(可能是屏蔽爬虫,建议保留) requests.exceptions.ConnectionError
类似知乎,简书基本都反爬了,所以简单的获得还不能有效访问,细节不值得大费周章,直接保留就好。而错误,直接用试抛出异常就好,不然程序会停止运行。
<强>添加逻辑后:(代码可左右拖动)强>
len(书目)比;0:=书目。流行(0) 细节=re.search(模式、书签) 如果细节: #打印(detail.group (1) +“- - - - -”+ detail.group (2)) 试一试: #访问 r=请求。get(细节。组(1),超时=500) #如果可则添加 如果r。status_code==requests.codes.ok: new_lists.append(书签) 打印(“好- - - - - -保留:“+细节。组(1)+ " " +细节。组(2)) 其他: 如果(r。status_code==404): 打印(“不可访问删除:”+细节。组(1)+ " " +细节。组(2)+ '错误码”+ str (r.status_code)) 其他: 打印(“其他原因保留:“+细节。组(1)+ " " +细节。组(2)+ '错误码”+ str (r.status_code)) new_lists.append(书签) 除了: 打印(“不可访问删除:”+细节。组(1)+ " " +细节。组(2)) # new_lists.append(书签) 其他:#没匹配到是结构语句 new_lists.append(书签)使用Python清理收藏夹里已失效的网站