python socket.error: [Errno 10054] 解決方法


我用的是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訪問


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM