帶你入門Python爬蟲,8個常用爬蟲技巧盤點
python作為一門高階程式語言,它的定位是優雅、明確和簡單。
我學用python差不多一年時間了,
用得最多的還是各類爬蟲指令碼,
寫過抓代理本機驗證的指令碼、寫過論壇中自動登入自動發貼的指令碼
寫過自動收郵件的指令碼、寫過簡單的驗證碼識別的指令碼。
這些指令碼有一個共性,都是和web相關的,
總要用到獲取連結的一些方法,故累積了不少爬蟲抓站的經驗,
在此總結一下,那麼以後做東西也就不用重複勞動了。
如果你在學習Python的過程中遇見了很多疑問和難題,可以加-q-u-n 227 -435-450裡面有軟體視訊資料免費領取
1、基本抓取網頁
get方法
post方法
2.使用代理伺服器
這在某些情況下比較有用,
比如IP被封了,或者比如IP訪問的次數受到限制等等。
3.Cookies處理
是的沒錯,如果想同時用代理和cookie,
那就加入proxy_support然後operner改為 ,如下:
4.偽裝成瀏覽器訪問
某些網站反感爬蟲的到訪,於是對爬蟲一律拒絕請求。
這時候我們需要偽裝成瀏覽器,
這可以通過修改http包中的header來實現:
5、頁面解析
對於頁面解析最強大的當然是正規表示式,
這個對於不同網站不同的使用者都不一樣,就不用過多的說明。
其次就是解析庫了,常用的有兩個lxml和BeautifulSoup。
對於這兩個庫,我的評價是,
都是HTML/XML的處理庫,Beautifulsoup純python實現,效率低,
但是功能實用,比如能用通過結果搜尋獲得某個HTML節點的原始碼;
lxmlC語言編碼,高效,支援Xpath。
6.驗證碼的處理
碰到驗證碼咋辦?
這裡分兩種情況處理:
google那種驗證碼,沒辦法。
簡單的驗證碼:字元個數有限,只使用了簡單的平移或旋轉加噪音而沒有扭曲的,
這種還是有可能可以處理的,一般思路是旋轉的轉回來,噪音去掉,
然後劃分單個字元,劃分好了以後再通過特徵提取的方法(例如PCA)降維並生成特徵庫,
然後把驗證碼和特徵庫進行比較。
這個比較複雜,這裡就不展開了,
具體做法請弄本相關教科書好好研究一下。
7. gzip/deflate支援
現在的網頁普遍支援gzip壓縮,這往往可以解決大量傳輸時間,
以VeryCD的主頁為例,未壓縮版本247K,壓縮了以後45K,為原來的1/5。
這就意味著抓取速度會快5倍。
然而python的urllib/urllib2預設都不支援壓縮
要返回壓縮格式,必須在request的header裡面寫明’accept-encoding’,
然後讀取response後更要檢查header檢視是否有’content-encoding’一項來判斷是否需要解碼,很繁瑣瑣碎。
如何讓urllib2自動支援gzip, defalte呢?
其實可以繼承BaseHanlder類,
然後build_opener的方式來處理:
8、多執行緒併發抓取
單執行緒太慢的話,就需要多執行緒了,
這裡給個簡單的執行緒池模板 這個程式只是簡單地列印了1-10,
但是可以看出是併發的。
雖然說Python的多執行緒很雞肋
但是對於爬蟲這種網路頻繁型,
還是能一定程度提高效率的。
9. 總結
閱讀Python編寫的程式碼感覺像在閱讀英語一樣,這讓使用者可以專注於解決問題而不是去搞明白語言本身。
Python雖然是基於C語言編寫,但是摒棄了C中複雜的指標,使其變得簡明易學。
並且作為開源軟體,Python允許對程式碼進行閱讀,拷貝甚至改進。
這些效能成就了Python的高效率,有“人生苦短,我用Python”之說,是一種十分精彩又強大的語言。
總而言之,開始學Python一定要注意這4點:
1.程式碼規範,這本身就是一個非常好的習慣,如果開始不養好好的程式碼規劃,以後會很痛苦。
2.多動手,少看書,很多人學Python就一味的看書,這不是學數學物理,你看例題可能就會了,學習Python主要是學習程式設計思想。
3.勤練習,學完新的知識點,一定要記得如何去應用,不然學完就會忘,學我們這行主要都是實際操作。
4.學習要有效率,如果自己都覺得效率非常低,那就停不停,找一下原因,去問問過來人這是為什麼。
相關文章
- Python爬蟲入門,8個常用爬蟲技巧盤點Python爬蟲
- (python)爬蟲----八個專案帶你進入爬蟲的世界Python爬蟲
- Python爬蟲入門Python爬蟲
- 【爬蟲】python爬蟲從入門到放棄爬蟲Python
- 什麼是Python爬蟲?python爬蟲入門難嗎?Python爬蟲
- python-爬蟲入門Python爬蟲
- 8個Python爬蟲框架,你知道幾個?Python爬蟲框架
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- 2個月精通Python爬蟲——3大爬蟲框架+6場實戰+反爬蟲技巧+分散式爬蟲Python爬蟲框架分散式
- Python爬蟲入門教程 50-100 Python3爬蟲爬取VIP視訊-Python爬蟲6操作Python爬蟲
- 爬蟲入門爬蟲
- 為什麼學習python及爬蟲,Python爬蟲[入門篇]?Python爬蟲
- 爬蟲入門基礎-Python爬蟲Python
- python3 爬蟲入門Python爬蟲
- 不踩坑的Python爬蟲:Python爬蟲開發與專案實戰,從爬蟲入門 PythonPython爬蟲
- 什麼是Python爬蟲?Python爬蟲常用框架有哪些?Python爬蟲框架
- 爬蟲進階:反反爬蟲技巧爬蟲
- Python爬蟲入門【8】: 蜂鳥網圖片爬取之三Python爬蟲
- Python爬蟲入門【9】:圖蟲網多執行緒爬取Python爬蟲執行緒
- Python爬蟲入門【5】:27270圖片爬取Python爬蟲
- python爬蟲 之 BeautifulSoup庫入門Python爬蟲
- Python3爬蟲入門(一)Python爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- python爬蟲初探--第一個python爬蟲專案Python爬蟲
- 常用python爬蟲框架整理Python爬蟲框架
- Python爬蟲入門教程 61-100 寫個爬蟲碰到反爬了,動手破壞它!Python爬蟲
- 爬蟲(1) - 爬蟲基礎入門理論篇爬蟲
- [雪峰磁針石部落格]python爬蟲cookbook1爬蟲入門Python爬蟲
- Python爬蟲入門教程導航帖Python爬蟲
- Python3 爬蟲快速入門攻略Python爬蟲
- Python網路爬蟲4 - scrapy入門Python爬蟲
- python入門之爬蟲工具有哪些?Python爬蟲
- python網路爬蟲_Python爬蟲:30個小時搞定Python網路爬蟲視訊教程Python爬蟲
- 什麼是Python爬蟲?一篇文章帶你全面瞭解爬蟲Python爬蟲
- 8個高效的Python爬蟲框架分享!Python爬蟲框架
- Python爬蟲和java爬蟲哪個效率高Python爬蟲Java
- python就是爬蟲嗎-python就是爬蟲嗎Python爬蟲
- 為什麼零基礎會入不了Python爬蟲的門?8個常用技巧助你一臂之力Python爬蟲