1. 程式人生 > >12行簡單的Python程式碼,初窺爬蟲的祕境!小白入門必備!

12行簡單的Python程式碼,初窺爬蟲的祕境!小白入門必備!

12行簡單的Python程式碼,初窺爬蟲的祕境!小白入門必備!

 

往往不少童鞋寫論文苦於資料獲取艱難,輾轉走上爬蟲之路;

許多分析師做輿情監控或者競品分析的時候,也常常使用到爬蟲。

今天,本文將帶領小夥伴們通過12行簡單的Python程式碼,初窺爬蟲的祕境。

進群:943752371即可獲取各類Python入門學習資料!

12行簡單的Python程式碼,初窺爬蟲的祕境!小白入門必備!

 

爬蟲目標

本文采用requests + Xpath,爬取豆瓣電影《黑豹》部分短評內容。

執行以上的爬蟲指令碼,我們得以見證奇蹟

 

12行簡單的Python程式碼,初窺爬蟲的祕境!小白入門必備!

 

 

爬蟲結果與原網頁內容的對比,完全一致

 

12行簡單的Python程式碼,初窺爬蟲的祕境!小白入門必備!

 

 

通過tqdm模組實現了良好的互動

工具準備

chrome瀏覽器(分析HTTP請求、抓包)

安裝Python 3及相關模組(requests、lxml、pandas、time、random、tqdm)requests:用來簡單請求資料lxml:比Beautiful Soup更快更強的解析庫pandas:資料處理神器time:設定爬蟲訪問間隔防止被抓random:隨機數生成工具,配合time使用tqdm:互動好工具,顯示程式執行進度

基本步驟

網路請求分析

網頁內容解析

資料讀取儲存

涉及知識點

爬蟲協議

http請求分析

requests請求

Xpath語法

Python基礎語法

Pandas資料處理

爬蟲協議

爬蟲協議即網站根目錄之下的robots.txt檔案,用來告知爬蟲者哪些可以拿哪些不能偷,其中Crawl-delay告知了網站期望的被訪問的間隔。(為了對方伺服器端同學的飯碗,文明拿資料,本文將爬蟲訪問間隔設定為6-9秒的隨機數)

 

12行簡單的Python程式碼,初窺爬蟲的祕境!小白入門必備!

 

 

豆瓣網站的爬蟲協議

HTTP請求分析

使用chrome瀏覽器訪問《黑豹》短評頁面https://movie.douban.com/subject/6390825/comments?sort=new_score&status=P,按下F12,進入network面板進行網路請求的分析,通過重新整理網頁重新獲得請求,藉助chrome瀏覽器對請求進行篩選、分析,找到那個Ta

 

12行簡單的Python程式碼,初窺爬蟲的祕境!小白入門必備!

 

 

豆瓣短評頁面請求分析

通過請求分析,我們找到了目標url為'https://movie.douban.com/subject/6390825/comments?start=0&limit=20&sort=new_score&status=P&percent_type=',並且每次翻頁,引數start將往上增加20(通過多次翻頁嘗試,我們發現第11頁以後需要登入才能檢視,且登入狀態也僅展示前500條短評。作為簡單demo,本文僅對前11頁內容進行爬取)

requests請求

通過requests模組傳送一個get請求,用content方法獲取byte型資料,並以utf-8重新編碼;然後新增一個互動,判斷是否成功獲取到資源(狀態碼為200),輸出獲取狀態

 

12行簡單的Python程式碼,初窺爬蟲的祕境!小白入門必備!

 

 

請求詳情分析

(除了content,還有text方法,其返回unicode字符集,直接使用text方法遇到中文的話容易出現亂碼)

Xpath語法解析

獲取到資料之後,需要對網頁內容進行解析,常用的工具有正則表示式、Beautiful Soup、Xpath等等;其中Xpath又快又方便。此處我們通過Xpath解析資源獲取到了前220條短評的使用者名稱、短評分數、短評內容等資料。(可藉助chrome的強大功能直接複製Xpath,Xpath語法學習http://www.runoob.com/xpath/xpath-tutorial.html)

資料處理

獲取到資料之後,我們通過list構造dictionary,然後通過dictionary構造dataframe,並通過pandas模組將資料輸出為csv檔案

結語與彩蛋

本例通過requests+Xpath的方案,成功爬取了電影《黑豹》的部分豆瓣短評資料,為文字分析或其他資料探勘工作打好了資料地基。本文作為demo,僅展示了簡單的爬蟲流程,更多彩蛋如請求頭、請求體資訊獲取、cookie、模擬登入、分散式爬蟲等請關注後期文章更新喲。