如何以编程方式告诉Web服务器上是否存在我要求的文件名?

时间:2012-04-03 18:57:10

标签: python urllib

我正在帮助某人从网站上获取一堆(数万)pdf文件。我们有文件名的模式,但不是所有文件都存在。我假设要求提供一个不存在的文件是很粗鲁的,特别是在这种规模上。我正在使用python,在我的urllib2测试中,我发现这个片段会在文件存在的情况下获取该文件

s=urllib.urlretrieve('http://website/directory/filename.pdf','c:\\destination.pdf')

如果文件不存在,那么我会得到一个文件,其中包含我分配的名称,但是文件来自404页面。现在我可以在完成后处理这个(读取文件并删除所有404页面),但这对他们的服务器来说似乎不太好,也不是非常pythonic。

我试着看看urllib和urlretrieve中的各种函数,并且没有看到任何告诉我文件是否存在的信息。

1 个答案:

答案 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