python程序问题:urlopen()控制

本人用urlopen()批量打开网页,但是有时候会卡住(可能是网速的原因),能不能对urlopen()进行控制,当urlopen()读取超时或卡住则跳过,urlopen(... 本人用urlopen()批量打开网页,但是有时候会卡住(可能是网速的原因),能不能对urlopen()进行控制,当urlopen()读取超时或卡住则跳过,urlopen()或刷新重新打开网址内容,可以控制吗?请高手赐教!!!
卡住情况:不报错,长时间不能往下运行。
写的代码没问题,因为有的地址有时卡,有时能运行,我写的python程序要读几万个网页,所以一卡住我重新运行,有长时间卡在别的地址。。。python能实现类似timeout的控制吗?怎么处理呢?
展开
 我来答
就烦条0o
推荐于2018-03-29 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46487
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部

使用try...except来对urlopen出错进行控制,通过socket模块的setdefaulttimeout函数来控制超时时间,python3.x示例代码如下:

import urllib.request
import socket

socket.setdefaulttimeout(10) #设置超时时间
#要下载的网页列表
urls = ['http://www.test.com/1.htm',
        'http://www.test.com/2.htm',
        'http://www.test.com/3.htm',
        'http://www.test.com/4.htm',
        'http://www.test.com/5.htm',
        'http://www.test.com/6.htm']
for url in urls:
    try:
        html = urllib.request.urlopen(url)
        #处理得到的网页
    except:
        #出错处理
一猪之哀伤一
2010-03-06 · TA获得超过669个赞
知道小有建树答主
回答量:160
采纳率:0%
帮助的人:288万
展开全部
urllib的urlopen是可以设置超时时间的

import socket

#设置超时时间为10秒
timeout = 10
socket.setdefaulttimeout(timeout)

另外如果使用urlopen下载网页的话建议使用try...except捕捉异常,另外如果文件很多,建议使用多线程,会节约你很多时间
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
b2046b
2010-03-06
知道答主
回答量:2
采纳率:0%
帮助的人:2.6万
展开全部
能python有一个叫socket的模块,可以设置下载的时间
如:
socket.etdefaulttimeout(20)
就是等待20s如果没有反应就下载失败了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式