我用的是python2.7 我搜網上10054錯誤解決方法的時候發現,大部分文章都是以python3為基礎的,對於python2不適用。
python socket.error: [Errno 10054] 遠程主機強迫關閉了一個現有的連接。
原因:服務器發現你的爬蟲行為了,所有強制斷開鏈接了
解決辦法: 服務器知道你是爬蟲,加headers, 模擬瀏覽器agent;head中有一個user-agent每次都換不同的模擬代理
#coding:utf-8 import urllib2 url ='http://www.baidu.com' #例子 headers = {'User-agent' : 'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:22.0) Gecko/20100101 Firefox/22.0'} request = urllib2.Request(url, headers = headers) response = urllib2.urlopen(request,timeout=20) if response.getcode()==200: print response.read()
一般請求服務器爬取網頁時,我都不加headers的,但是我最近再爬取之前爬取的網頁時,就出現了404錯誤,可是發現了我的爬蟲行為。加了headers之后,就又可以正常爬取了。
參考
1、head中有一個user-agent每次都換不同的模擬代理
2、測試最大訪問時間短,每秒多少次請求會出現中斷,然后sleep(200)毫秒
3、每次請求中斷上一次鏈接,keep-live=false
試試看,
不然就是換IP訪問
2、測試最大訪問時間短,每秒多少次請求會出現中斷,然后sleep(200)毫秒
3、每次請求中斷上一次鏈接,keep-live=false
試試看,
不然就是換IP訪問