日韩 亚洲一区二_久久vs国产综合色大全_国产精品福利在线_欧美在线一级A片免费观看欧美在线_女同性毛片60分钟

您現(xiàn)在所在的位置:首頁(yè) >關(guān)於奇酷 > 行業(yè)動(dòng)態(tài) > Python爬蟲(chóng)入門(mén),8個(gè)常用爬蟲(chóng)技巧盤(pán)點(diǎn)

Python爬蟲(chóng)入門(mén),8個(gè)常用爬蟲(chóng)技巧盤(pán)點(diǎn)

來(lái)源:奇酷教育 發(fā)表於:

Python爬蟲(chóng)入門(mén),8個(gè)常用爬蟲(chóng)技巧盤(pán)點(diǎn)。

  編程對(duì)於任何一個(gè)新手來(lái)說(shuō)都不是一件容易的事情,Python對(duì)於任何一個(gè)想學(xué)習(xí)的編程的人來(lái)說(shuō)的確是一個(gè)福音,閱讀Python代碼像是在閱讀文章,源於Python語言提供了非常優(yōu)雅的語法,被稱(chēng)為最優(yōu)雅的語言之一。
 
  python入門(mén)時(shí)
 
  用得最多的還是各類(lèi)爬蟲(chóng)腳本,
 
  寫(xiě)過(guò)抓代理本機(jī)驗(yàn)證的腳本、寫(xiě)過(guò)論壇中自動(dòng)登錄自動(dòng)發(fā)貼的腳本
 
  寫(xiě)過(guò)自動(dòng)收郵件的腳本、寫(xiě)過(guò)簡(jiǎn)單的驗(yàn)證碼識別的腳本。
 
  這些腳本有一個(gè)共性,都是和web相關(guān)的,
 
  8個(gè)常用爬蟲(chóng)技巧盤(pán)點(diǎn)和大家分享:
 
 
  1、基本抓取網(wǎng)頁(yè)
 
  get方法
 
  post方法
 
  2.使用代理伺服器
 
  這在某些情況下比較有用,
 
  比如IP被封了,或者比如IP訪(fǎng)問(wèn)的次數(shù)受到限制等等。
 
  3.Cookies處理
 
  是的沒錯,如果想同時(shí)用代理和cookie,
 
  那就加入proxy_support然後operner改為 ,如下:
 
  4.偽裝成瀏覽器訪(fǎng)問(wèn)
 
  某些網(wǎng)站反感爬蟲(chóng)的到訪(fǎng),於是對(duì)爬蟲(chóng)一律拒絕請求。
 
  這時(shí)候我們需要偽裝成瀏覽器,
 
  這可以通過(guò)修改http包中的header來(lái)實(shí)現(xiàn):
 
  5、頁(yè)面解析
 
  對(duì)於頁(yè)面解析最強(qiáng)大的當(dāng)然是正則表達(dá)式,
 
  這個(gè)對(duì)於不同網(wǎng)站不同的使用者都不一樣,就不用過(guò)多的說(shuō)明。
 
  其次就是解析庫(kù)了,常用的有兩(liǎng)個(gè)lxml和BeautifulSoup。
 
  對(duì)於這兩(liǎng)個(gè)庫(kù),我的評(píng)價(jià)是,
 
  都是HTML/XML的處理庫(kù),Beautifulsoup純python實(shí)現(xiàn),效率低,
 
  但是功能實(shí)用,比如能用通過(guò)結(jié)果搜索獲得某個(gè)HTML節(jié)點(diǎn)的源碼;
 
  lxmlC語言編碼,高效,支持Xpath。
 
  6.驗(yàn)證碼的處理
 
  碰到驗(yàn)證碼咋辦?
 
  這裡分兩(liǎng)種情況處理:
 
  google那種驗(yàn)證碼,沒辦法。
 
  簡(jiǎn)單的驗(yàn)證碼:字符個(gè)數(shù)有限,只使用了簡(jiǎn)單的平移或旋轉(zhuǎn)加噪音而沒有扭曲的,
 
  這種還是有可能可以處理的,一般思路是旋轉(zhuǎn)的轉(zhuǎn)回來(lái),噪音去掉,
 
  然後劃(huà)分單個(gè)字符,劃(huà)分好了以後再通過(guò)特徵提取的方法(例如PCA)降維並生成特徵庫(kù),
 
  然後把驗(yàn)證碼和特徵庫(kù)進(jìn)行比較。
 
  這個(gè)比較複雜,這裡就不展開(kāi)了,
 
  具體做法請弄本相關(guān)教科書(shū)好好研究一下。
 
  7. gzip/deflate支持
 
  現(xiàn)在的網(wǎng)頁(yè)普遍支持gzip壓縮,這往往可以解決大量傳輸(shū)時(shí)間,
 
  以VeryCD的主頁(yè)為例,未壓縮版本247K,壓縮了以後45K,為原來(lái)的1/5。
 
  這就意味著抓取速度會(huì)快5倍。
 
  然而python的urllib/urllib2默認(rèn)都不支持壓縮
 
  要返回壓縮格式,必須在request的header裡面寫(xiě)明’accept-encoding’,
 
  然後讀取response後更要檢查header查看是否有’content-encoding’一項(xiàng)來(lái)判斷是否需要解碼,很繁瑣瑣碎。
 
  如何讓urllib2自動(dòng)支持gzip, defalte呢?
 
  其實(shí)可以繼承BaseHanlder類(lèi),
 
  然後build_opener的方式來(lái)處理:
 
  8、多線(xiàn )程並發(fā)抓取
 
  單線(xiàn )程太慢的話(huà),就需要多線(xiàn )程了,
 
  這裡給個(gè)簡(jiǎn)單的線(xiàn )程池模板 這個(gè)程序只是簡(jiǎn)單地列印了1-10,
 
  但是可以看出是並發(fā)的。
 
  雖然說(shuō)Python的多線(xiàn )程很雞肋
 
  但是對(duì)於爬蟲(chóng)這種網(wǎng)絡(luò)頻繁型,
 
  還是能一定程度提高效率的。
 
  9. 總結(jié)
 
  閱讀Python編寫(xiě)的代碼感覺像在閱讀英語一樣,這讓使用者可以專(zhuān)注於解決問(wèn)題而不是去搞明白語言本身。
 
  Python雖然是基於C語言編寫(xiě),但是摒棄了C中複雜的指針,使其變得簡(jiǎn)明易學(xué)。
 
  並且作為開(kāi)源軟體,Python允許對(duì)代碼進(jìn)行閱讀,拷貝甚至改進(jìn)。
 
  這些性能成就了Python的高效率,有“人生苦短,我用Python”之說(shuō),是一種十分精彩又強(qiáng)大的語言。
 
  總而言之,開(kāi)始學(xué)Python一定要注意這4點(diǎn):
 
  1.代碼規(guī)範,這本身就是一個(gè)非常好的習(xí)慣,如果開(kāi)始不養(yǎng)好好的代碼規(guī)劃(huà),以後會(huì)很痛苦。
 
  2.多動(dòng)手,少看書(shū),很多人學(xué)Python就一味的看書(shū),這不是學(xué)數(shù)學(xué)物理,你看例題可能就會(huì)了,學(xué)習(xí)Python主要是學(xué)習(xí)編程思想。
 
  3.勤練習(xí),學(xué)完新的知識點(diǎn),一定要記得如何去應(yīng)用,不然學(xué)完就會(huì)忘,學(xué)我們這行主要都是實(shí)際操作。
 
  4.學(xué)習(xí)要有效率,如果自己都覺得效率非常低,那就停不停,找一下原因,去問(wèn)問(wèn)過(guò)來(lái)人這是為什麼。