書接上文,今天一塊兒來學習把網頁版文章下載到本地電腦上。
前面講過,請求網頁的流程是瀏覽器先向服務器請求html,服務器返回html,瀏覽器分析這個html,發現html中還須要一堆的js,css,圖片,而後瀏覽器再去下載這些文件,最終組裝成一個完整的html頁面。
因此,第一步,要把這個html下載下來。
是時候請出你們期待已久的python了,我在講解的過程當中只列出核心代碼,完整代碼會列在文章最後,因此強烈建議先把整篇文章看完了再動手本身敲代碼。其餘文章也是相同的邏輯,之後再也不重複。
須要用到一個鼎鼎大名的第三方庫 requests ,用它來模擬瀏覽器給微信服務器發送請求和接收請求。
那麼發送的請求中都要包含什麼內容呢?
上文介紹chrome開發者工具時提過這個問題,奧祕在Headers這個標籤中,見下圖,理論上來說chrome瀏覽器發送了什麼咱們的最好就原樣照着用python發送什麼,即把下圖所示的General 和 Request Headers 塊中的參數全都發送出去。但多數時候並不須要這樣,特別是對於get請求,通常只須要少數幾個參數便可,可是請注意User-Agent這一項必定要改得跟chrome同樣。其餘細節再也不多述,事後您操做的多了天然會明白。css
簡單的註釋會直接在代碼中列出,複雜的會在代碼後面用文字再解釋,另外本文是一份原稿發佈在多個平臺,可能有的平臺顯示代碼會有縮進錯亂的問題,當你發現運行代碼出錯時請秉持「盡信書不如無書」的批判態度。html
運行上面代碼以前,請先手動在C盤下新建vWeChatFiles文件夾,本項目以後下載的全部文件都放在此目錄下,請注意這裏是保存下載的網頁文件的,而你的python源代碼能夠放在其餘目錄下。
運行上面的代碼,你將看到屏幕刷刷得顯示一堆網頁源代碼,而且在c:/vWeChatFiles文件夾下生成一個test.html文件。
下面,來看這個下載下來的test.html可否正常工做,請先打開chrome,按F12,彈出開發者工具,在最上面一行標籤中切換到 Network,而後在chrome 的網頁中輸入C:/vWeChatFiles/test.html,回車。可能須要等幾十秒,看到了剛纔咱們下載的網頁。
同時chrome開發者工具顯示以下圖所示python
chrome
編程
瀏覽器
注意第21行,有的圖片會以 //http://res.wx.qq.com開頭,須要換成常見的http://res.wx.qq.com 形式開頭,不然本地打開網頁時這些圖片會沒法正常加載。至於爲何會有 // 開頭的網址您能夠自行百度。
C:\vWeChatFiles文件夾下會有一個test2.html文件,在chrome中打開,網頁能夠正常顯示了,可是開發者工具中依然顯示有許多請求是紅字狀態,先不用管。
接下來的問題是,雖然圖片能夠在網頁中顯示了,但src是一個網址,圖片是在每次打開網頁時從遠程服務器下載的,並無保存到本地,若是遠程文章被刪了圖片就無法看了。
接下來咱們要作的是:把圖片下載到本地,並在html中把圖片的src指向本地圖片的位置。
主要代碼以下,須要先在vWeChatFiles目錄下新建一個images文件夾服務器
至此,網頁保存到本地基本完成,其實還有幾個小問題,好比:微信
app