[方法分析] 如何快速入手掌握Python爬蟲(chóng)

本文適合掌握了Python基本語(yǔ)法,完成了邏輯訓(xùn)練題的同學(xué)。

不得不說(shuō)目前二期同學(xué)的學(xué)習(xí)勁頭和氛圍比一期的要好得。大家的提問(wèn)、互動(dòng)和建議也比較多。

回答一個(gè)問(wèn)題。昨天發(fā)了推薦的視頻,今天晚上也有一場(chǎng)直播課程(YiCo的),講得比較多的工具和抓取中的調(diào)試,有同學(xué)感到內(nèi)容太多,對(duì)于怎么入手寫一個(gè)爬蟲(chóng)代碼沒(méi)有頭緒。

其實(shí)入手寫簡(jiǎn)單爬蟲(chóng)功能還是比較簡(jiǎn)單。分成三步:

  1. 發(fā)起請(qǐng)求,返回頁(yè)面數(shù)據(jù)
    請(qǐng)求網(wǎng)絡(luò)資源(你想抓取的URL),得到網(wǎng)頁(yè)源代碼(或者返回的json數(shù)據(jù)),這個(gè)過(guò)程可以看作就是模擬瀏覽器操作。
  2. 對(duì)網(wǎng)頁(yè)進(jìn)行解析,得到數(shù)據(jù)
    獲取網(wǎng)頁(yè)中的數(shù)據(jù),有這以下幾種方法:
  • 正則表達(dá)式匹配
  • BeautifulSoup
  • XPath
  1. 數(shù)據(jù)處理,存入數(shù)據(jù)庫(kù)
    對(duì)數(shù)據(jù)進(jìn)行處理,如格式調(diào)整,進(jìn)行數(shù)據(jù)庫(kù)操作(或文件操作 常用csv文件格式)

針對(duì)每一步來(lái)具體講:
1)發(fā)起網(wǎng)絡(luò)請(qǐng)求的方式,urllib, urlib2, requests庫(kù),都已對(duì)網(wǎng)絡(luò)請(qǐng)求高度封裝了,兩三行代碼就可以實(shí)現(xiàn)。后面如果使用scrapy連這兩三行代碼也不用寫了。

會(huì)出現(xiàn)的問(wèn)題(或難點(diǎn)),對(duì)URL訪問(wèn)不熟悉,包括請(qǐng)求參數(shù),請(qǐng)求頭,這里就需要對(duì)URL進(jìn)行抓包分析,經(jīng)常使用的工具 Chrome 的“檢查”工具,F(xiàn)iddler等。確定分析的主要有兩點(diǎn):請(qǐng)求的URL,請(qǐng)求中的關(guān)鍵參數(shù)。

另外就是增加防Ban措施。(讓爬蟲(chóng)偽裝得像瀏覽器一樣)

2) 對(duì)頁(yè)面進(jìn)行匹配或解析

  • 正則表達(dá)式剛開(kāi)始比較難掌握,原理就是用一個(gè)模板格式去套,把所需要的數(shù)據(jù)匹配出來(lái)??梢韵扔?BeautifulSoup 或 XPath

  • BeautifulSoup 是基于 DOM 的,會(huì)載入整個(gè)文檔(就是整個(gè)網(wǎng)頁(yè)),解析整個(gè) DOM 樹(shù),因此時(shí)間和內(nèi)存開(kāi)銷都會(huì)大很多。好處是比較簡(jiǎn)單,通過(guò)標(biāo)簽類型就可以查找定位,支持 css 選擇器。

    比如簡(jiǎn)書(shū)的文章標(biāo)題就是在 屬性為 title<a> 標(biāo)簽中

  • XPath 使用是需要知道文檔結(jié)構(gòu),即 確定這個(gè)標(biāo)簽的路徑。
    上面的例子,文章標(biāo)題是在 <div> (屬性 author) 下的 <a> 標(biāo)簽

3)數(shù)據(jù)處理,入庫(kù)操作。
循序漸進(jìn)的學(xué)習(xí)方式,第一步,先把數(shù)據(jù)打印出來(lái),好處馬上看到抓取的數(shù)據(jù)結(jié)果,有成就感,便于調(diào)度,當(dāng)然最好是能debug調(diào)試。第二步,數(shù)據(jù)寫入CSV文件,幾千條上萬(wàn)條數(shù)據(jù)用Excel分析起來(lái)也很方便,這種方式一般滿足日常一些數(shù)據(jù)的要求,抓取盡可能多的數(shù)據(jù)練習(xí)。第三,學(xué)習(xí)mysql, mongodb數(shù)據(jù)庫(kù)操作(包括程序?qū)懭?,基?sql 語(yǔ)句練習(xí))


006 - 5分鐘快速學(xué)會(huì)正規(guī)表達(dá)式

007 - Python簡(jiǎn)單爬蟲(chóng) - 正則表達(dá)式

010 - 使用BeautifulSoup和XPath抓取結(jié)構(gòu)化數(shù)據(jù)


YiCo斗魚(yú)直播視頻錄屏:鏈接: https://pan.baidu.com/s/1eR19GOE 密碼: dt7y

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容