python作為一門高級編程語言,它的定位是優雅、明確和簡單,
我學用python差不多一年時間了,
用得最多的還是各類爬蟲腳本,注意:很多人學Python程序中會遇到各種煩惱問題,沒有人幫答疑容易放棄,為此小編建了個Python全堆疊免費答疑.裙 :七衣衣九起起巴而五(數字的諧音)轉換下可以找到了,不懂的問題有老司機解決里面還有最新Python教程專案可拿,,一起相互監督共同進步!
寫過抓代理本機驗證的腳本、寫過論壇中自動登錄自動發貼的腳本
寫過自動收郵件的腳本、寫過簡單的驗證碼識別的腳本,
這些腳本有一個共性,都是和web相關的,
總要用到獲取鏈接的一些方法,故累積了不少爬蟲抓站的經驗,
在此總結一下,那么以后做東西也就不用重復勞動了,
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程序中會遇到各種煩惱問題,沒有人幫答疑容易放棄,為此小編建了個Python全堆疊免費答疑.裙 :七衣衣九起起巴而五(數字的諧音)轉換下可以找到了,不懂的問題有老司機解決里面還有最新Python教程專案可拿,,一起相互監督共同進步!
本文的文字及圖片來源于網路加上自己的想法,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/179631.html
標籤:Python
