最近有小夥伴和我留言想學python爬蟲,那麼就搞起來吧。
準備階段
爬蟲有什麼用呢?舉個最簡單的小例子,你需要《戰狼2》的所有豆瓣影評。最先想的做法可能是打開瀏覽器,進入該網站,找到評論,一個一個複製到文本中,保存,翻頁,接著複製,直到翻到最後一頁。而爬蟲只要寫腳本,執行,泡杯咖啡,坐等他執行完。
首先需要在電腦上裝好 python3 和 pip 。此外還需要知道python的一些基本語法。這些內容網上搜索有許多教程(例如廖雪峰),這邊就不再細說了。
我們這次需要使用的是 正則表達式 re 庫和第三方的 requests 庫,以下是安裝方法。
pip3 install requests
引入庫。
importrequestsimportre
爬蟲可以簡單地分為獲取數據,分析數據,存儲數據三個步驟。
下載數據
簡單來說一個網頁是由一個html文件解析構成,我們需要獲取這個文本內容。
每個瀏覽器都可以通過開發者工具獲取到文本內容,以chrome為例,打開網頁後,右鍵->檢查。
右邊的 Elements 就是我們要下載的數據。
讓我們看看 requests 是如何獲取這個數據的。
上面的 html_str 就是我們需要的源數據。獲取數據我們需要一個網頁地址,獲取後判斷狀態碼是否為200,最後再將內容decode就得到需要的整個html源數據。
分析數據
這次我們用正則表達式去解析源數據,截取到我們需要。關於詳細的正則知識可以在這裡中學習。
現在我們的目標是抓取博客的文章標題和連結,我們可以通過剛才的開發者工具獲取文章標題和連結的特徵。
可以看到我們要的內容都具有以下這種格式。
我們就為這種格式寫出正則表達式。(ps: 我也寫了幾次才寫對,看不懂的話我們私下交流交流)
使用正則表達式中的 findall 把所有內容找出來,並保存在字符串中。
但是,我們只爬了其中的一頁。還有許多頁沒有爬呢!(ps: 驕傲臉,我已經寫了好多頁的原創內容了。)
我們可以點幾個下一頁,很容易發現其中的規律。
第一頁 : 網頁第二頁: 網頁/page2/第三頁: 網頁/page3/...為此,我們加個循環判斷就可以啦。
在判斷狀態碼不為200時,退出循環。
存儲數據
這次我們就用文本存儲來結束我們的教程吧。(ps:資料庫存儲我也還沒學到,哈哈哈呃。)
withopen('lamyoung_title_out.txt','w',encoding='utf-8')asf:f.write(write_content)
最後看下輸出結果吧~
小結
本文只是簡單地帶你入門寫個python爬蟲(其實也不簡單哈,正則表達式還是要花時間學學)。其實爬蟲還涉及多線程,資料庫,還有其他解析庫(可能可以替代正則表達式)。後續學到了第一時間分享(也許)給大家。
「其實我還寫過python處理excel表導出json,自動處理svn添加刪除等腳本,歡迎一起學習」
我是白玉無冰,遊戲開發技術小赤佬,也玩 python 和 shell。歡迎私信交流學習!