日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

骚操作!曾经爱过!用 Python 清理收藏夹里已失效的网站

發(fā)布時(shí)間:2024/9/15 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 骚操作!曾经爱过!用 Python 清理收藏夹里已失效的网站 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

失效的書(shū)簽們

我們?nèi)粘g覽網(wǎng)站的時(shí)候,時(shí)不時(shí)會(huì)遇到些新奇的東西( 你懂的.jpg ),于是我們就默默的點(diǎn)了個(gè)收藏或者加書(shū)簽。然而當(dāng)我們面對(duì)成百上千的書(shū)簽和收藏夾的時(shí)候,總會(huì)頭疼不已……

尤其是昨天還在更新的程序設(shè)計(jì)博客,今天就掛了永不更新。或者是昨天看的起勁的電影網(wǎng)站,今天直接404。失效頁(yè)面這么多,每次我打開(kāi)才知道失效了,并且需要手動(dòng)刪除,這能是一個(gè)程序員干的事情嗎?

可是無(wú)論是Google瀏覽器還是國(guó)內(nèi)瀏覽器,最多也就提供一個(gè)對(duì)于收藏夾的備份服務(wù),那只能Python走起了。

Python支持的收藏夾文件格式

對(duì)于收藏夾提供的支持很少,主要還是因?yàn)槭詹貖A藏在瀏覽器里面,我們只能手動(dòng)導(dǎo)出htm文件進(jìn)行管理

內(nèi)容比較簡(jiǎn)單,對(duì)前端沒(méi)什么了解的我,也可以很明顯看出其中的樹(shù)形結(jié)構(gòu)和內(nèi)在邏輯。

固定格式 網(wǎng)址 固定格式 頁(yè)面名 固定格式

很簡(jiǎn)單的想到了正則匹配,其中有兩個(gè)子串。提取出來(lái)再挨個(gè)訪問(wèn),看看哪個(gè)失效了,就刪除,就能獲得清理后的收藏夾了。

讀取收藏夾文件

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()

因?yàn)閷?duì)于前端的不熟悉,這個(gè)導(dǎo)出的收藏夾可以抽象的分成

  • 結(jié)構(gòu)代碼

  • 保存網(wǎng)頁(yè)書(shū)簽的關(guān)鍵代碼

其中結(jié)構(gòu)代碼我們不能動(dòng),要原封不動(dòng)的保留,而保存網(wǎng)頁(yè)書(shū)簽的關(guān)鍵代碼,我們要提取內(nèi)容并且進(jìn)行判斷保留和刪除。

所以這里采用readlines函數(shù),每行讀取,單獨(dú)判斷。

正則匹配

pattern?=?r'HREF="(.*?)"?.*?>(.*?)</A>'
while?len(booklists)>0:
????bookmark?=?booklists.pop(0)
????detail?=?re.search(pattern,?bookmark)

如果是關(guān)鍵代碼:提取出的子串在 detail.group(1) 和 detail.group(2) 里面

而如果是結(jié)構(gòu)代碼:detail == None

訪問(wèn)頁(yè)面

import?requests

r?=?requests.get(detail.group(1),timeout=500)

編代碼嘗試之后發(fā)現(xiàn)會(huì)有這四種情況

  • r.status_code == requests.codes.ok

  • r.status_code==404

  • r.status_code!=404 && 無(wú)法訪問(wèn) (可能是屏蔽爬蟲(chóng),建議保留)

  • requests.exceptions.ConnectionError

類似知乎、簡(jiǎn)書(shū)基本都反爬了,所以簡(jiǎn)單的get還不能有效訪問(wèn),細(xì)節(jié)不值得大費(fèi)周章,直接保留就好。而error,直接用try拋出異常就好,不然程序會(huì)停止運(yùn)行。

添加邏輯后:(代碼可左右拖動(dòng))

while?len(booklists)>0:
????bookmark?
=?booklists.pop(0)
????detail?=?re.search(pattern,?bookmark)
????if?detail:
????????#print(detail.group(1)?+"----"+?detail.group(2))
????????try:
????????#訪問(wèn)
????????????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("不可訪問(wèn)?刪除:"+?detail.group(1)+"???"+?detail.group(2)?+'錯(cuò)誤碼?'+str(r.status_code))
????????????????else:
????????????????????print("其他原因?保留:"+?detail.group(1)+"???"+?detail.group(2)?+'錯(cuò)誤碼?'+str(r.status_code))
????????????????????new_lists.append(bookmark)
????????except:
????????????print(?"不可訪問(wèn)?刪除:"+?detail.group(1)+"???"+?detail.group(2))
????????????#new_lists.append(bookmark)
????else:#沒(méi)匹配到是結(jié)構(gòu)語(yǔ)句
????????new_lists.append(bookmark)

程序執(zhí)行情況

導(dǎo)出htm

bookmarks_f?=?open('new_'+fname,?"w+"?,encoding='UTF-8')
bookmarks_f.writelines(new_lists)
bookmarks_f.close()

導(dǎo)入瀏覽器

實(shí)際應(yīng)用于我的瀏覽器

確實(shí)有很多電影網(wǎng)都失效了,通過(guò)Python能夠一鍵清理其中無(wú)法訪問(wèn)的書(shū)簽。人生苦短,Python 的確可以讓生活更高效~

最后本文完整代碼已上傳分享,可以在公眾號(hào)「小詹學(xué)Python」后臺(tái)回復(fù)關(guān)鍵詞「20190908」獲取。

推薦閱讀:(點(diǎn)擊下方標(biāo)題即可跳轉(zhuǎn))

騷操作 !用 Python 偷偷抓取女朋友的行蹤

我在 GitHub 上看到了一個(gè)喪心病狂的開(kāi)源項(xiàng)目!

騷操作 !用 Python 自動(dòng)下載抖音美麗小姐姐


??長(zhǎng)按 2 秒關(guān)注「 小詹學(xué)Python 」

總結(jié)

以上是生活随笔為你收集整理的骚操作!曾经爱过!用 Python 清理收藏夹里已失效的网站的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。