5

我正在开发一个下载管理器。在 python 中使用 requests 模块来检查有效链接(并希望链接断开)。我检查以下链接的代码:

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”的实际 URL,这需要一秒钟,因此这似乎是请求的问题。

4

2 回答 2

12

并非所有主机都支持head请求。您可以改用它:

r = requests.get(url, stream=True)

这实际上只下载标题,而不是响应内容。此外,如果想法是在之后获取文件,您不必提出另一个请求。

请参阅此处了解更多信息。

于 2013-04-03T07:55:18.943 回答
11

不要使用get实际检索文件,使用:

r = requests.head(url,allow_redirects=False)

从我机器上的 6.9 秒到 0.4 秒

于 2013-04-03T06:54:52.053 回答