往往不少童鞋寫論文苦于數據獲取艱難,輾轉走上爬蟲之路;
許多分析師做輿情監控或者競品分析的時候,也常常使用到爬蟲。
今天,本文將帶領小伙伴們通過12行簡單的Python代碼,初窺爬蟲的秘境。
爬蟲目標
本文采用requests + Xpath,爬取豆瓣電影《黑豹》部分短評內容。
運行以上的爬蟲腳本,我們得以見證奇跡
爬蟲結果與原網頁內容的對比,完全一致
通過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秒的隨機數)
豆瓣網站的爬蟲協議
HTTP請求分析
使用chrome瀏覽器訪問《黑豹》短評頁面https://movie.douban.com/subject/6390825/comments?sort=new_score&status=P,按下F12,進入network面板進行網絡請求的分析,通過刷新網頁重新獲得請求,借助chrome瀏覽器對請求進行篩選、分析,找到那個Ta
豆瓣短評頁面請求分析
通過請求分析,我們找到了目標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),輸出獲取狀態
請求詳情分析
(除了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、模擬登錄、分布式爬蟲等請關注后期文章更新喲。
-
代碼
+關注
關注
30文章
4798瀏覽量
68714 -
python
+關注
關注
56文章
4797瀏覽量
84792 -
爬蟲
+關注
關注
0文章
82瀏覽量
6922
原文標題:12行Python暴力爬《黑豹》豆瓣短評
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論