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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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访问




以上是关于python socket.error: [Errno 10054] 解决方法的主要内容,如果未能解决你的问题,请参考以下文章

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

python绑定socket.error:[Errno 13]权限被拒绝

Python 处理 socket.error:[Errno 104] 连接由对等方重置

python发邮脚本运行每次都报socket.error: [Errno 110] Connection timed out ,用别人的机器也报

Python rpyc“socket.error:[Errno 113]没有到主机的路由”

socket.error:[errno 99] 无法在 python 中分配请求的地址和命名空间