亚洲免费一级高潮_欧美极品白嫩视频在线_中国AV片在线播放_欧美亚洲日韩欧洲在线看

您現(xiàn)在所在的位置:首頁 >關(guān)于奇酷 > 行業(yè)動態(tài) > Python爬蟲入門,8個常用爬蟲技巧盤點(diǎn)

Python爬蟲入門,8個常用爬蟲技巧盤點(diǎn)

來源:奇酷教育 發(fā)表于:

Python爬蟲入門,8個常用爬蟲技巧盤點(diǎn)。

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