800819103
在線客服,實時響應qq群
在線客服,實時響應客服電話
13318873961
網絡爬蟲的要求有幾點
一、一個好的網頁解釋器,python推薦BeautifulSoup,java推薦htmlparser。
二、良好的性能,不能太慢,當遇上網絡狀況不大好的時候,慢更受不了,所以通常需要同時啟動N個網絡爬蟲進行工作。使用隊列可以很好解決這個問題。優化性能常見解決方案------隊列輔助多線程。
三、穩定性,容錯性。網絡本來就存在不穩定性,連接超時,連接重置等是常見的不穩定現象,網絡爬蟲程序要充分妥當地處理這些問題,保證爬蟲輸出結果的完整性。
技巧
一、基本的抓取
import urllib2
content=urllib2.urlopen("http://baidu.com").read()
二、使用代理服務器
一般,抓去大量數據時,最好使用代理。防止IP被封,下載次數受限等。
import urllib2
proxy_support=urllib2.ProxyHandler({'http':'http://XX.XX.XX.XX:XXXX'})
opener=urllib2.build_opener(proxy_support,urllib2.HTTPHandler)
urllib2.install_opener(opener)
content=urllib2.urlopen('http://XXXX').read()
三、需要登錄時
1. 使用cookie
import urllib2,cookielib
cookie_support=urllib2.HTTPCookieProcessor(cookielib.CookieJar())
opener=urllib2.build_opener(cookie_support,urllib2.HTTPHandler)
urllib2.install_opener(opener)
content=urllib2.urlopen('http://XXXX').read()
若想同時使用cookie和代理,則opener換成
opener=urllib2.build_opener(proxy_support,cookie_support,urllib2.HTTPHandler)
2. 處理表單
一般通過post方式提交數據,可以利用F12開發者工具分析提交的數據包,然后構建相應的post數據發送http請求
3. 偽裝成瀏覽器
某些網站反感爬蟲,拒絕請求??梢酝ㄟ^修改http包的header來偽裝
headers={
‘User-Angent’: 'Mozilla/5.0(Windows;U;WindowsNT6.1;en-US;rv:1.9.1.6)Gecko/20091201Firefox/3.5.6'
}
req=urllib2.Request(
url="http://...",
data=postData,
headers=headers
)
4. 反盜鏈
header里面,referer站點是不是他自己,所以我們只需要把headers的referer改成該網站即可。