相信很多人都喜歡在簡書上寫文章,但是諸如很多平臺或者博客平臺一樣,平臺的檢查機制很多時候會誤殺一批人,導致無故賬號被封。雖然事后可以交涉解封,但其中各種滋味唯有經歷過的人才能感受到。于是大家最好養成經常備份的好習慣,還好簡書的后臺有一個下載所有文章的按鈕。雖然可以瀏覽器打開直接查看,可惜的是,文章的圖片還是線上的 ,并沒有備份到本地就仍然會有丟失的可能。 小馬即興搞了一個入門python小爬蟲腳本來爬取文章圖片保存到本地,媽媽再也不用擔心文章丟失了。小馬也是初學者,分享僅供參考,但希望能拋磚引玉,共同進步。
思路分析
遇到問題就想辦法解決嘍,我們從簡書后臺下載下來的所有文章是一個rar壓縮包,解壓后是按文集為文件夾的一堆html文件,如果你用的markdown編輯則是一堆md文件。那么問題來了,我們的文章是下載下來了,但是文章中的圖片還是只是個遠程鏈接,圖片沒有保存在本地。于是,小馬打開了一個html文件,發現就是一個靜態html文件,很好,我們可以爬取到文章的每個圖片鏈接,下載到本地。這時候python爬蟲就登場了。
python爬蟲
python是什么?按照老慣例,我們先來看一下百科怎么說:
Python是一種跨平臺的計算機程序設計語言。 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。最初被設計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越多被用于獨立的、大型項目的開發。
哎呀,又是一頓商業互吹。咋也不管了,Lu起鍵盤就是干。我們首先要寫一個腳本,讓其遍歷本地備份文章的整個目錄文件夾和文件,然后打開文件,讀取每一行文件內容,然后對每一行的文件內容進行正則匹配,匹配到圖片的元素,然后把地址挖出來進行下載。爬蟲爬一遍完文件自然圖片也就下完了,為了后續辨認我們會把圖片放在對應文章名稱的文件夾中,并按備份的時間來創建文件夾保存圖片。
我們要跑起python,就要先安裝,于是安裝就不贅述了,基本就是傻瓜安裝。安裝完注意把路徑注冊到系統變量中,這樣就可以全局運行python命令了。我們來跑一個簡單的實例。
好了,我們的武器已經生產好了,接下來就是戰斗了。我們看到,我們下來的包解壓之后目錄是類似這樣。
好了,我們來遍歷這個文件夾處理。小馬遍歷的時候為了調試直接輸出文章標題,但因為有中文亂碼導致IO錯誤,執行報錯。
解決辦法就是設置窗口字符集,也是醉醉的。如下處理后運行正常。
當然,輸出文件名并不是我們的最終目的,我們要下載所有圖片到本地呢。于是下面的代碼最終出爐,下例中只針對HTML里的圖片正則,md文件的同理更換正則式子即可。后續小馬會托管到git供有些小伙伴入門參考。
好了,我們cmd到腳本的所在目錄執行腳本,直接完成了所有文章圖片的本地備份。
查看圖片下載效果。
Python腳本怎么用
打完收工。對于大多數人可能不太感興趣它是怎么誕生地,只是需要這么一個工具來爽歪歪。小馬后續打算封裝成小工具供大家下載直接運行使用。但目前還是順手說下拿到這個腳本怎么跑,麻煩是麻煩了點,但很助于理解。以window為例。
1、官網下載對應版本Python并傻瓜式安裝,注冊安裝目錄到系統環境變量。
2、簡書后臺,一鍵下載你的文章壓縮包,解壓,重命名為articlebak。下載上面我們寫的腳本文件imgbakScript.py,放在與你的文章文件夾同目錄下,就像下面這樣。
3、你需要打開cmd,到目錄一下敲命令python imgbakScript.py即可。如下:
好了,你會發現同級目錄下多了個imgbak文件夾,里面就是所有文章的圖片被下到本地了。
就到這吧,需要腳本源碼文件的也可以直接call小馬(點這里下載)。不到之處歡迎指正,拜拜。
相關文獻:
分布式爬蟲(URL隊列分配給多個機器去爬取)
python和go的區別(go需要bulid編譯,go比py快;py適合web和科學數據,庫豐富,go更像c的升級版,系統語言;py沒有內置并發機制go有)
原創文章,未經允許請勿轉載。