本文適合掌握了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)單。分成三步:
- 發(fā)起請(qǐng)求,返回頁(yè)面數(shù)據(jù)
請(qǐng)求網(wǎng)絡(luò)資源(你想抓取的URL),得到網(wǎng)頁(yè)源代碼(或者返回的json數(shù)據(jù)),這個(gè)過(guò)程可以看作就是模擬瀏覽器操作。 - 對(duì)網(wǎng)頁(yè)進(jìn)行解析,得到數(shù)據(jù)
獲取網(wǎng)頁(yè)中的數(shù)據(jù),有這以下幾種方法:
- 正則表達(dá)式匹配
- BeautifulSoup
- XPath
- 數(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ù)