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

  

  

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

  

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

  

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

  

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

  

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

  

<强> Python支持的收藏夹文件格式

  

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

  

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

  

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

  

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

  

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

  

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

  

<代码>固定格式网址固定格式页面名固定格式

  

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

  

<强>读取收藏夹文件

        路径=" 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清理收藏夹里已失效的网站