先看幾張對比圖,分別是官網截圖和抓取下來的 txt文檔的截圖,不算那難看的排版的話,內容是一致的,圖片用 url替換了!
在整個抓取過程中,除了普通的文本以外,還需要處理 3個地方,分別是:代碼、圖片、視頻,因為目前只寫到了文本文件,所以直接抓到圖片或者視頻的地址,標識清楚後寫入到 txt,這裡可以在進一步,寫到 word/pdf 或者其他文件,留待以後改進!
Python 數據處理 Python編程從入門到實踐 核心編程基礎教程 網絡爬蟲入門書籍 python視頻編程從入門到精通 程序設計教材人民郵電
¥72.2
領3元券
話不多說,先來看看整個爬蟲過程吧!目標:廖雪峰官網—python教程
工具:pycharm、python3.6、requests庫、time庫、lxml庫
思路:
85 抓取所有的目錄章節 url
85 找到 url內教程主體所在的 div
85 遍歷 div下所有標籤,文本和代碼部分內容直接保存
85 區分其中的代碼、圖片、視頻 3個內容,分別以文本、url的形式保存並做好標識
85 加入時間計數,統計總用時
大致如上,我們先來抓取所有的章節 url,這裡我們用 xpath 來匹配 div,然後循環 div下的所有 a標籤的文本和 href屬性,這兩個部分為章節的名字和 url,當然 url部分需要拼接,加入域名就可以了!
Header和主頁信息,請自行添加哦!
取到章節信息後,還需要判斷是否存在子章節,存在則需要繼續取,觀察網頁後發現子章節所在標籤為 a標籤的平級 div標籤,用 if判斷就可以,網頁結構如下:
代碼我們這樣寫
其中 get_summary()函數是我自定義的下載函數,代碼如下
傳入 3個參數:url是開始我們抓到的章節或者子章節的 url,name為章節名,title為子章節名,默認為空,這樣做是為了在寫入文件時進行判斷,大家自行查看就可以 ,注意的是前面說到的 3個地方,文章中的代碼部分是在<pre>標籤下,和<p>標籤一樣取出內容即可,圖片和視頻所在的標籤分別做判斷,存在則將 url寫入文本!
最終運行程序結果
在 txt下,不要選擇自動換行,否則,代碼部分就不好看了!整個爬虫部分很簡單,複雜的部分是處理各種標籤及標籤下的其他內容,最後寫入文件因為不需要排版,反而簡單了。
歡迎大家來找我一起交流,完善代碼!