我正在帮助某人从网站上提取一堆(数万个)pdf 文件。我们有文件名的模式,但并非所有文件都存在。我假设要求一个不存在的文件是不礼貌的,尤其是在这种规模下。我正在使用 python,在我对 urllib2 的测试中,我发现如果文件存在,这个片段会给我获取文件
s=urllib.urlretrieve('http://website/directory/filename.pdf','c:\\destination.pdf')
如果该文件不存在,那么我会得到一个文件,该文件具有我指定的名称,但文本来自其 404 页面。现在我可以在完成后处理这个问题(读取文件并删除所有 404 页面),但这对他们的服务器来说似乎不太好,也不是很 pythonic。
我试着查看 urllib 和 urlretrieve 中的各种函数,但没有看到任何告诉我文件是否存在的信息。
请您参考如下方法:
您可以查看响应的返回码。现有 PDF 为 200,不存在 PDF 为 404。您可以使用 requests使这更容易的库:
>>> import requests
>>> r = requests.get('http://cdn.sstatic.net/stackoverflow/img/sprites.png')
>>> r.status_code
200
>>> r = requests.get('http://cdn.sstatic.net/stackoverflow/img/sprites.xxx')
>>> r.status_code
404
