python瀏覽器偽裝
A. python爬蟲偽裝瀏覽器出現問題求助
聲明:以下代碼在Python 3.3中編寫調試完成!
首先我是這樣做的:
import urllib.request
url = "http://www.oschina.net/"
data = urllib.request.urlopen(url).read()
print(data)
結果發現不行,OSC加了保護,不止是OSC,CSDN等等很多網站都這樣,這就必須要偽裝瀏覽器正常訪問了,類似蜘蛛爬蟲一樣,那麼只有給代碼加上一個Header,再試試讀取HTML。
Chrome如何查看你的瀏覽器的Header:
一圖全解,有木有。
F12打開開發人員工具,其他瀏覽器也有類似功能,很方便哦,這里我們只需要Request Headers中的User-Agent就可以了。
各種糾結呀,網上許多代碼都是Python2的,我用的3.3,import很多都不一樣了,沒辦法只有翻Python的官方文檔,全英文有點苦,還好我的Chrome可以隨時翻譯,減輕負擔呀。
在官方文檔3.3中找到了urllib.request的文檔:docs.python.org/3/library/urllib.request.html
在Examples中找到了一個addheaders的方法,試了一下果然能行,下面就是代碼。
'''
Created on 2013-1-27
@author: isaced
'''
import urllib.request
url = "http://www.oschina.net/"
headers = ('User-Agent','Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11')
opener = urllib.request.build_opener()
opener.addheaders = [headers]
data = opener.open(url).read()
print(data)
到這里就能輸出頁面的HTML了,也可以直接保存成本地HTML文件,打開正常。
另外對於這編碼問題還是有點迷茫。
另收藏一條很有用的語句,type(),類似於C語言中的typeof(),可以print出來直接查看數據類型,很方便!
B. python爬蟲偽裝瀏覽器發送獲取不到信息,反而去掉偽裝就獲取到了
不要使用self.header,可以輸出一下self.header看看是否在調用正確,望採納
C. 如何處理python爬蟲ip被封
當python爬蟲IP被封可用以下這幾種方法:
1、放慢爬取速度,減少對於目標網站帶來的壓力,但會減少單位時間類的爬取量。
2、偽造cookies,若從瀏覽器中能夠 正常訪問一個頁面,則可以將瀏覽器中的cookies復制過來使用
3、偽造User-Agent,在請求頭中把User-Agent設置成瀏覽器中的User-Agent,來偽造瀏覽器訪問。
4、使用代理IP,使用代理IP之後能夠 讓網路爬蟲偽裝自己的真實IP。
對於python網路爬蟲來說,有時候業務量繁重,分布式爬蟲是最佳的增強效率方式,而分布式爬蟲又急切需要數目眾多的IP資源,這一點免費IP是滿足不了的,並且免費代理一般不提供高匿名的代理IP,因此不建議大家使用免費的代理IP。為了節約前期成本費而使用免費ip代理,最終只會因為免費ip的劣質而導致苦不堪言,反倒得不償失。使用代理商代理IP可以有效的保障網路的安全,在IP被封的情況下可以有充足的IP可以進行更換,保證工作的正常進行。
D. Python爬蟲瀏覽器偽裝以後瀏覽器打不開了
進行爬蟲異常處理。
爬蟲在運行的過程中,經常會遇到異常。若不進行異常處理,則爬蟲程序會直接崩潰停止運行,當下次再次運行時,則又會重頭開始。因此,開發一個具有頑強生命力的爬蟲,必須要進行異常處理。