我正在开发一个下载管理器。使用python中的请求模块来检查有效链接(并希望破坏链接)。 我检查以下链接的代码:
url='http://pyscripter.googlecode.com/files/PyScripter-v2.5.3-Setup.exe'
r = requests.get(url,allow_redirects=False) #this line takes 40 seconds
if r.status_code==200:
print "link valid"
else:
print "link invalid"
现在,问题是执行此检查需要大约40秒,这是巨大的。 我的问题是如何使用urllib2或其他东西来加快速度?
注意:如果我将url
替换为实际网址“http://pyscripter.googlecode.com/files/PyScripter-v2.5.3-Setup.exe”,则需要一秒钟,因此它似乎是请求的问题。
答案 0 :(得分:11)
并非所有主机都支持head
个请求。您可以改为使用它:
r = requests.get(url, stream=True)
这实际上只下载标题,而不是响应内容。此外,如果想要在以后获取文件,则不必另外提出请求。
有关更多信息,请参阅here。
答案 1 :(得分:9)
请勿使用实际检索文件的get
,请使用:
r = requests.head(url,allow_redirects=False)
从我的机器上的6.9secs到0.4secs