python程序问题:urlopen()控制
本人用urlopen()批量打开网页,但是有时候会卡住(可能是网速的原因),能不能对urlopen()进行控制,当urlopen()读取超时或卡住则跳过,urlopen(...
本人用urlopen()批量打开网页,但是有时候会卡住(可能是网速的原因),能不能对urlopen()进行控制,当urlopen()读取超时或卡住则跳过,urlopen()或刷新重新打开网址内容,可以控制吗?请高手赐教!!!
卡住情况:不报错,长时间不能往下运行。
写的代码没问题,因为有的地址有时卡,有时能运行,我写的python程序要读几万个网页,所以一卡住我重新运行,有长时间卡在别的地址。。。python能实现类似timeout的控制吗?怎么处理呢? 展开
卡住情况:不报错,长时间不能往下运行。
写的代码没问题,因为有的地址有时卡,有时能运行,我写的python程序要读几万个网页,所以一卡住我重新运行,有长时间卡在别的地址。。。python能实现类似timeout的控制吗?怎么处理呢? 展开
展开全部
使用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:
#出错处理
展开全部
urllib的urlopen是可以设置超时时间的
import socket
#设置超时时间为10秒
timeout = 10
socket.setdefaulttimeout(timeout)
另外如果使用urlopen下载网页的话建议使用try...except捕捉异常,另外如果文件很多,建议使用多线程,会节约你很多时间
import socket
#设置超时时间为10秒
timeout = 10
socket.setdefaulttimeout(timeout)
另外如果使用urlopen下载网页的话建议使用try...except捕捉异常,另外如果文件很多,建议使用多线程,会节约你很多时间
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
能python有一个叫socket的模块,可以设置下载的时间
如:
socket.etdefaulttimeout(20)
就是等待20s如果没有反应就下载失败了
如:
socket.etdefaulttimeout(20)
就是等待20s如果没有反应就下载失败了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询