序言
如果你對工作不滿意或?qū)ι畈粷M意,請不用抱怨,因?yàn)楹翢o用處,你只有努力提升技能,努力的完善自己,不斷地向前奔跑,才會(huì)越來越好的!
使用代理IP
開發(fā)爬蟲過程中經(jīng)常會(huì)遇到IP被封掉的情況,這時(shí)就需要用到代理IP;
在urllib2包中有個(gè)ProxyHandler類,通過此類可以設(shè)置代理訪問網(wǎng)頁。
Cookies處理
cookies是某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密),python提供了cookielib模塊用于處理cookies,cookielib模塊的主要作用是提供可存儲cookie的對象,以便于與urllib2模塊配合使用來訪問Internet資源。
偽裝成瀏覽器
某些網(wǎng)站反感爬蟲的到訪,于是對爬蟲一律拒絕請求。所以用urllib2直接訪問網(wǎng)站經(jīng)常會(huì)出現(xiàn)HTTP Error 403: Forbidden的情況對有些 header 要特別留意,服務(wù)端會(huì)針對這些 header 做檢查。
- User-Agent 有些服務(wù)端或 Proxy 會(huì)檢查該值,用來判斷是否是瀏覽器發(fā)起的 Request;
- Content-Type 在使用 REST 接口時(shí),服務(wù)端會(huì)檢查該值,用來確定 HTTP Body 中的內(nèi)容該怎樣解析。
頁面解析
對于頁面解析最強(qiáng)大的當(dāng)然是正則表達(dá)式。其次就是解析庫了,常用的有兩個(gè) lxml 和 BeautifulSoup,對于這兩個(gè)庫,我的評價(jià)是,都是HTML/XML的處理庫。
- Beautifulsoup是純python實(shí)現(xiàn)的,效率雖然低一些,但是功能實(shí)用,比如:它可以通過結(jié)果搜索獲得某個(gè)HTML節(jié)點(diǎn)的源碼這樣的;
- lxml 底層是由C語言編碼的,比較高效,支持Xpath。
驗(yàn)證碼的處理
對于一些簡單的驗(yàn)證碼,可以進(jìn)行簡單的識別。本人也只進(jìn)行過一些簡單的驗(yàn)證碼識別。但是有些反人類的驗(yàn)證碼,比如12306,可以通過打碼平臺進(jìn)行人工打碼,當(dāng)然這是要付費(fèi)的。
gzip壓縮
大家有沒有遇到過某些網(wǎng)頁,不論你怎么轉(zhuǎn)碼都是一團(tuán)亂碼。
如果你遇到了,說明你還不知道目前許多web服務(wù)具有發(fā)送壓縮數(shù)據(jù)的能力,這可以將網(wǎng)絡(luò)線路上傳輸?shù)拇罅繑?shù)據(jù)消減 60% 以上。尤其適用于 XML web 服務(wù),因?yàn)?XML 數(shù)據(jù)的壓縮率可以很高。但是一般服務(wù)器不會(huì)為你發(fā)送壓縮數(shù)據(jù),除非你告訴服務(wù)器你可以處理壓縮數(shù)據(jù)。