我正在帮助某人从网站上获取一堆(数万)pdf文件。我们有文件名的模式,但不是所有文件都存在。我假设要求提供一个不存在的文件是很粗鲁的,特别是在这种规模上。我正在使用python,在我的urllib2测试中,我发现这个片段会在文件存在的情况下获取该文件
s=urllib.urlretrieve('http://website/directory/filename.pdf','c:\\destination.pdf')
如果文件不存在,那么我会得到一个文件,其中包含我分配的名称,但是文件来自404页面。现在我可以在完成后处理这个(读取文件并删除所有404页面),但这对他们的服务器来说似乎不太好,也不是非常pythonic。
我试着看看urllib和urlretrieve中的各种函数,并且没有看到任何告诉我文件是否存在的信息。
答案 0 :(得分:6)
您可以查看回复的返回代码。现有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