urllib2.urlopen超时问题

2023-05-16

原帖地址:http://hi.baidu.com/yss1983/item/933fbe45a09c43e01381da06

问题描述:

    没有设置timeout参数,结果在网络环境不好的情况下,时常出现read()方法没有任何反应的问题,程序卡死在read()方法里,搞了大半天,才找到问题,给urlopen加上timeout就ok了,设置了timeout之后超时之后read超时的时候会抛出socket.timeout异常,想要程序稳定,还需要给urlopen加上异常处理,再加上出现异常重试,程序就完美了。
import urllib2 url='http://www.facebook.com/' fails = 0 while True: try: if fails >= 20: break req = urllib2.Request(url) response = urllib2.urlopen(req, None, 3) page = response.read() except: fails += 1 print '网络连接出现问题, 正在尝试再次请求: ', fails else: break

解决方案:

    有时候我们在爬取网络数据时,会因为对方网速缓慢、服务器超时等原因, 导致 urllib2.urlopen() 之后的 read()操作(下载内容)卡死,要解决这个问题方法有如下几个:

1、为urlopen设置可选参数 timeout


import urllib2
# http://classweb.loxa.com.tw/dino123/air/P1000772.jpg
r = urllib2.Request("http://classweb.loxa.com.tw/dino123/air/P1000775.jpg")
try:
        print 111111111111111111
        f = urllib2.urlopen(r, data=None, timeout=3)
        print 2222222222222222
        result =  f.read()
        print 333333333333333333
except Exception,e:
        print "444444444444444444---------" + str(e)

print "55555555555555"
  

2、设置全局的socket超时:


import socket
socket.setdefaulttimeout(10.0) 
或者使用:httplib2 or timeout_urllib2
http://code.google.com/p/httplib2/wiki/Examples
http://code.google.com/p/timeout-urllib2/source/browse/trunk/timeout_urllib2.py
  

3、使用定时器 timer


from urllib2 import urlopen
from threading import Timer
url = "http://www.python.org"
def handler(fh):
        fh.close()
fh = urlopen(url)
t = Timer(20.0, handler,[fh])
t.start()
data = fh.read()    #如果二进制文件需要换成二进制的读取方式
t.cancel()  

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

urllib2.urlopen超时问题 的相关文章

  • Python 请求 api 未获取表体内的数据

    我正在尝试废弃一个网页 以从请求响应返回的文本数据中获取表值 tbody class stats tbody tbody class annotation tbody 实际上里面有一些数据tbody类 但 我无法使用请求访问该数据 这是我的
  • HTTP:nltk.download() 的代理身份验证错误

    我正在使用 nltk download 下载我需要的包 但我收到以下错误 root nishant Inspiron 1545 home nishant Dropbox DDP data python Python 2 7 3 defaul
  • cURL:通过代理进行 https

    我需要向 https URL 发出 cURL 请求 但我还必须通过代理 这样做有什么问题吗 我在使用curl和php执行此操作时遇到了很多麻烦 因此我尝试在Python中使用urllib2执行此操作 结果发现urllib2在通过代理时无法P
  • 为一个名称 urllib2 发送多个值

    我正在尝试提交一个包含复选框的网页 并且我最多需要选中其中 10 个复选框 问题是当我尝试将它们分配给字典中的一个名称时 它只分配最后一个而不是全部 10 个 那么我该如何做到这一点 这里是请求代码 forms ref ck ref typ
  • 通过代理使用 urllib2

    我正在尝试使用urllib2通过代理 然而 在尝试了使用传递我的验证详细信息的几乎所有变体之后urllib2 我要么收到一个永远挂起且不返回任何内容的请求 要么收到407 Errors 我可以使用我的浏览器连接到网络 该浏览器连接到 pro
  • 如何在 HTTP 请求中使用 urllib2 发送自定义标头?

    我想在使用 urllib2 urlopen 时在请求中发送自定义 Accept 标头 我怎么做 不完全的 创建一个Request对象实际上并不发送请求 并且 Request 对象没有Read 方法 还 read 是小写 您所需要做的就是通过
  • 如果 socket.setdefaulttimeout() 不起作用,我该怎么办?

    我正在编写一个脚本 多线程 来从网站检索内容 并且该网站不是很稳定 所以时不时地会出现挂起的 http 请求 甚至无法超时socket setdefaulttimeout 由于我无法控制该网站 我唯一能做的就是改进我的代码 但我现在没有想法
  • 为什么 urllib2.urlopen 无法打开“http://localhost/new-post#comment-29”这样的页面?

    我很好奇 为什么运行此行时会出现 404 错误 urllib2 urlopen http localhost new post comment 29 虽然一切正常冲浪http localhost new post comment 29 ht
  • Urllib2 和 BeautifulSoup :不错的一对,但太慢 - urllib3 和线程?

    当我听到有关线程和 urllib3 的一些好消息时 我正在寻找一种方法来优化我的代码 显然 人们不同意哪种解决方案是最好的 下面我的脚本的问题是执行时间 太慢了 Step 1 我获取此页面 Step 2 我用 BeautifulSoup 解
  • 如何下载需要用户名和密码的网页?

    例如 我想在插入用户名和密码后下载此页面 http forum ubuntu it org 我尝试过 wget 但不起作用 有 python 的解决方案吗 您可以使用这些用户名和密码进行测试 username johnconnor pass
  • urllib2 SSL3_CHECK_CERT_AND_ALGORITHM:dh 密钥太小

    尝试使用发送 SOAP 请求suds 我在用着Python 2 7 6 我不太熟悉安全性 我相信我的机器或服务器机器上的安全密钥太小 我不知道如何解决 我是否生成一些新密钥并创建自定义开启器 任何帮助 指导都会有帮助 堆栈跟踪 Traceb
  • python urllib2:连接被对等方重置

    我有一个 Perl 程序 可以从我的大学图书馆的数据库中检索数据 并且运行良好 现在想用python重写但是遇到问题
  • HTTP 错误 504:尝试阅读 Reddit 评论帖子时网关超时

    我在尝试从 reddit 获取评论的 http 时遇到错误 各种 URL 都发生过这种情况 并非所有 URL 都带有特殊字符 这就是其中之一 在一小时内 可能有 1000 个或更多对 reddit com 域的请求 hdr User Age
  • 如果 URL 是 https,Python urllib2 会给出“网络无法访问错误”

    我正在尝试使用 urllib2 库获取一些网址 a urllib2 urlopen http www google com ret a read 上面的代码工作正常 并给出了预期的结果 但是当我创建 url https 时 它会给出 网络无
  • urllib2 返回浏览器不同的页面?

    我正在尝试抓取一个页面 我的路由器的管理页面 但该设备似乎为 urllib2 提供与我的浏览器不同的页面 以前有人发现过这个吗 我怎样才能绕过它 这是我正在使用的代码 gt gt gt from BeautifulSoup import B
  • 使用 python 登录 quora

    我尝试使用 python 登录 quora 但它给了我以下错误 urllib2 HTTPError HTTP Error 500 Internal Server Error 到目前为止 这是我的代码 我也在代理后面工作 import url
  • Python 使用 urllib2 发起请求时 Tor 检查失败

    读完后other https stackoverflow com questions 1096379 tor with python 问题 https stackoverflow com questions 711351 using url
  • 告诉 urllib2 使用自定义 DNS

    我想告诉urllib2 urlopen or a 定制开瓶器 使用127 0 0 1 or 1 来解析地址 我不会改变我的 etc resolv conf 然而 一种可能的解决方案是使用类似的工具dnspython查询地址和httplib构
  • 让 Google 搜索回归 Python

    我正在尝试从 Google 搜索中获取前 20 个结果 当我使用urllib2 urlopen 它给了我一个错误并说我被禁止了 我听说这与伪造用户代理字符串有关 但我几乎没有 urllib2 经验 如果有人可以提供帮助 我将非常感激 谢谢
  • Python 3 urllib 与请求性能

    我正在使用 python 3 5 并且正在检查 urllib 模块与 requests 模块的性能 我用 python 编写了两个客户端 第一个使用 urllib 模块 第二个使用 request 模块 它们都生成二进制数据 我将其发送到基

随机推荐

  • DataHub:通用的元数据搜索和发现工具(开源)

    Get Started With DataHub DataHub 作为世界上最大的专业网络和Economic Graph的运营商 xff0c LinkedIn 的数据团队一直致力于扩展其基础架构 xff0c 以满足我们不断增长的大数据生态系
  • mp4格式视频因为录制到一半断电,导致损坏能修复

    risingresearch com 可以用 xff0c 完全免费 xff0c 只是下载页面有英文 xff0c 安装后是中文的 xff0c 非常小巧 然后可能会出现缺文件头的提示 此时点击是 xff0c 然后导入一个正常录制的MP4视频 x
  • ipscan端口扫描工具

    ip端口扫描工具的英文名字是ipscan 是一款搜索局域网机器的绿色小软件 IPScan在静态IP地址环境下或者DHCP环境下 都提供完善的IP地址管理 用户也可以使用IPScanProbe自带的DHCP服务器 它能提供更高的安全和灵活的D
  • IPFS,HDFS以及http对比笔记

    分布式系统 分布式系统发展至今已有数十年 xff0c 那么分布式系统到底是什么 xff1f 实际上分布式系统并没有标准的定义 分布式系统一般的呈现方式是将硬件或软件分布在不同的网络计算机 xff0c 彼此间通过消息传递进行通信及协调 xff
  • chatgpt注意点

    1 ip地址不能是国内 2 浏览器无痕模式 xff08 浏览器不挑 xff09 3 国外的手机号激活sms 激活 20230213目前还可以注册
  • ASP.NET 连接MySQL数据库 详细步骤

    ASP NET默认的数据库是MS SQL Server xff0c 微软的数据库产品 事实上 xff0c 如果不计成本因素的话 xff0c Windows Server 43 IIS 43 MS SQL Server 43 ASP NET是
  • Apache Skywalking介绍

    Apache Skywalking介绍 1 基本介绍 Apache Skywalking是一款APM工具 xff08 Application Performance Management 应用性能管理 xff09 2 安装部署 官网地址 x
  • 常用的法律检索类网站

    1 中国裁判文书网 xff1a http wenshu court gov cn xff0c 共公布全国各级法院生效裁判文书1 2亿篇 xff0c 可以检索 查看 下载裁判文书 2 中国司法案例网 xff1a http anli court
  • 重要代码备份

    文书 xff1a button 61 document getElementsByClassName 34 a xzBox 34 for let i 61 0 i lt 61 14 i 43 43 setTimeout 61 gt butt
  • 在 Visio 绘图中剪裁线条和形状

    编辑绘图或图表 在 34 开始 34 选项卡上 xff0c 单击 34 编辑 34 组中 34 选择 34 xff0c 然后单击 列表中的 34 全 选 34 单击 34 开发工具 34 选项卡 在 34 形状设计 34 组中 xff0c
  • 定时器/计数器介绍

    第一次在学习定时器的时候模模糊糊 xff0c 在做过一些题目之后对定时器有了更新的理解 xff0c 现在整理一下 xff0c 做笔记使用 目录 一 基础知识 定时器的作用 xff1a 定时器的实质 xff1a 定时器的工作原理 xff1a
  • Win10下安装Framework 3.5

    不同于 VC 43 43 运行库 xff0c NET Framework 是支持向下兼容的 xff0c 即 xff1a NET Framework 4 8 向下兼容至 4 0 NET Framework 3 5 SP1 向下兼容至 2 0
  • linux串口通信

    linux下串口通信与管理 linux下的串口与windows有一些区别 xff0c 下面将介绍一下linux下串口通信管理 查看是否支持USB串口 xff1a lsmod grep usbserial 如果没有信息 xff1a sudo
  • UP-magic的口袋机arm挂载u盘

    查看U盘信息 fdisk l mount t vfat dev mmcblk0p1 mnt sdcard 挂载U盘 mount命令格式 xff1a mount 参数 设备名称 挂载点 其他参数 mount t vfat dev sdb1 m
  • dell t630服务器风扇控制笔记记录(耗时一天)

    1 打开虚拟控制台得用IE xff1b 2 Dell PowerEdge T640 加装显卡之后风扇狂转问题解决 知乎 感谢知乎Billy xff0c 操作步骤 xff1a 1 查看iDrac版本 xff0c 必须在3 30 30 30及以
  • 安装autogpt中出现的问题及安装autogpt的小白教程

    ImportError DLL load failed while importing numpy ops The specified module could not be found 解决方案 xff1a Latest supporte
  • UBUNTU下NFS配置(用于嵌入式开发)

    1 NFS简介 NFS xff08 Network File System xff09 即网络文件系统 xff0c 是FreeBSD支持的文件系统中的一种 xff0c 它允许网络中的计算机之间共享资源 在NFS的应用中 xff0c 本地NF
  • Ubuntu 18.04 下 uhd+gnuradio 安装指南

    sudo apt get y install git swig cmake doxygen build essential libboost all dev libtool libusb 1 0 0 libusb 1 0 0 dev lib
  • 跨网的数据交换解决方案

    一 什么是跨网 跨网是指在互联网与局域网之间不能直接连通的网络 这些局域网可以是保密性较高的单独的局域网 xff0c 也可以是公安网 军网等 二 为什么要跨网传输 以公安网为例 xff0c 公安网对数据安全的要求较高 xff0c 所以不与互
  • urllib2.urlopen超时问题

    原帖地址 xff1a http hi baidu com yss1983 item 933fbe45a09c43e01381da06 问题描述 xff1a 没有设置timeout参数 xff0c 结果在网络环境不好的情况下 xff0c 时常