往往不少童鞋寫(xiě)論文苦于數(shù)據(jù)獲取艱難,輾轉(zhuǎn)走上爬蟲(chóng)之路;
許多分析師做輿情監(jiān)控或者競(jìng)品分析的時(shí)候,也常常使用到爬蟲(chóng)。
今天,本文將帶領(lǐng)小伙伴們通過(guò)12行簡(jiǎn)單的Python代碼,初窺爬蟲(chóng)的秘境。
爬蟲(chóng)目標(biāo)
本文采用requests + Xpath,爬取豆瓣電影《黑豹》部分短評(píng)內(nèi)容。
運(yùn)行以上的爬蟲(chóng)腳本,我們得以見(jiàn)證奇跡
爬蟲(chóng)結(jié)果與原網(wǎng)頁(yè)內(nèi)容的對(duì)比,完全一致
通過(guò)tqdm模塊實(shí)現(xiàn)了良好的交互
工具準(zhǔn)備
chrome瀏覽器(分析HTTP請(qǐng)求、抓包)
安裝Python 3及相關(guān)模塊(requests、lxml、pandas、time、random、tqdm)requests:用來(lái)簡(jiǎn)單請(qǐng)求數(shù)據(jù)lxml:比Beautiful Soup更快更強(qiáng)的解析庫(kù)pandas:數(shù)據(jù)處理神器time:設(shè)置爬蟲(chóng)訪問(wèn)間隔防止被抓random:隨機(jī)數(shù)生成工具,配合time使用tqdm:交互好工具,顯示程序運(yùn)行進(jìn)度
基本步驟
網(wǎng)絡(luò)請(qǐng)求分析
網(wǎng)頁(yè)內(nèi)容解析
數(shù)據(jù)讀取存儲(chǔ)
涉及知識(shí)點(diǎn)
爬蟲(chóng)協(xié)議
http請(qǐng)求分析
requests請(qǐng)求
Xpath語(yǔ)法
Python基礎(chǔ)語(yǔ)法
Pandas數(shù)據(jù)處理
爬蟲(chóng)協(xié)議
爬蟲(chóng)協(xié)議即網(wǎng)站根目錄之下的robots.txt文件,用來(lái)告知爬蟲(chóng)者哪些可以拿哪些不能偷,其中Crawl-delay告知了網(wǎng)站期望的被訪問(wèn)的間隔。(為了對(duì)方服務(wù)器端同學(xué)的飯碗,文明拿數(shù)據(jù),本文將爬蟲(chóng)訪問(wèn)間隔設(shè)置為6-9秒的隨機(jī)數(shù))
豆瓣網(wǎng)站的爬蟲(chóng)協(xié)議
HTTP請(qǐng)求分析
使用chrome瀏覽器訪問(wèn)《黑豹》短評(píng)頁(yè)面https://movie.douban.com/subject/6390825/comments?sort=new_score&status=P,按下F12,進(jìn)入network面板進(jìn)行網(wǎng)絡(luò)請(qǐng)求的分析,通過(guò)刷新網(wǎng)頁(yè)重新獲得請(qǐng)求,借助chrome瀏覽器對(duì)請(qǐng)求進(jìn)行篩選、分析,找到那個(gè)Ta
豆瓣短評(píng)頁(yè)面請(qǐng)求分析
通過(guò)請(qǐng)求分析,我們找到了目標(biāo)url為'https://movie.douban.com/subject/6390825/comments?start=0&limit=20&sort=new_score&status=P&percent_type=',并且每次翻頁(yè),參數(shù)start將往上增加20(通過(guò)多次翻頁(yè)嘗試,我們發(fā)現(xiàn)第11頁(yè)以后需要登錄才能查看,且登錄狀態(tài)也僅展示前500條短評(píng)。作為簡(jiǎn)單demo,本文僅對(duì)前11頁(yè)內(nèi)容進(jìn)行爬?。?/p>
requests請(qǐng)求
通過(guò)requests模塊發(fā)送一個(gè)get請(qǐng)求,用content方法獲取byte型數(shù)據(jù),并以u(píng)tf-8重新編碼;然后添加一個(gè)交互,判斷是否成功獲取到資源(狀態(tài)碼為200),輸出獲取狀態(tài)
請(qǐng)求詳情分析
(除了content,還有text方法,其返回unicode字符集,直接使用text方法遇到中文的話容易出現(xiàn)亂碼)
Xpath語(yǔ)法解析
獲取到數(shù)據(jù)之后,需要對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行解析,常用的工具有正則表達(dá)式、Beautiful Soup、Xpath等等;其中Xpath又快又方便。此處我們通過(guò)Xpath解析資源獲取到了前220條短評(píng)的用戶名、短評(píng)分?jǐn)?shù)、短評(píng)內(nèi)容等數(shù)據(jù)。(可借助chrome的強(qiáng)大功能直接復(fù)制Xpath,Xpath語(yǔ)法學(xué)習(xí)http://www.runoob.com/xpath/xpath-tutorial.html)
數(shù)據(jù)處理
獲取到數(shù)據(jù)之后,我們通過(guò)list構(gòu)造dictionary,然后通過(guò)dictionary構(gòu)造dataframe,并通過(guò)pandas模塊將數(shù)據(jù)輸出為csv文件
結(jié)語(yǔ)與彩蛋
本例通過(guò)requests+Xpath的方案,成功爬取了電影《黑豹》的部分豆瓣短評(píng)數(shù)據(jù),為文本分析或其他數(shù)據(jù)挖掘工作打好了數(shù)據(jù)地基。本文作為demo,僅展示了簡(jiǎn)單的爬蟲(chóng)流程,更多彩蛋如請(qǐng)求頭、請(qǐng)求體信息獲取、cookie、模擬登錄、分布式爬蟲(chóng)等請(qǐng)關(guān)注后期文章更新喲。
-
代碼
+關(guān)注
關(guān)注
30文章
4823瀏覽量
68953 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
84983 -
爬蟲(chóng)
+關(guān)注
關(guān)注
0文章
82瀏覽量
6982
原文標(biāo)題:12行Python暴力爬《黑豹》豆瓣短評(píng)
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論