如何从给定 URL 下载此 XML 文件

How Can I download this XML file from given URL

我正在尝试从以下 URL...

下载 XML 文件

http://www.equibase.com/premium/eqbLateChangeXMLDownload.cfm

然而,下面的代码除了一个空文件外没有下载任何东西。我不确定如何 "follow" 上面的 link 并获取生成的 XML 文件。希望这是可能的。

import urllib
urlfile = "http://www.equibase.com/premium/eqbLateChangeXMLDownload.cfm"
urllib.urlretrieve(urlfile,"c:\test.xml")

如有任何帮助,我们将不胜感激!谢谢!

服务器使用User-Agent嗅探;它查看 User-Agent header,如果它不喜欢它看到的内容,它会 return 一个空的响应。

您可以自己设置header:

import urllib2
import shutil

headers = {'User-Agent': 'Mozilla'}
urlfile = "http://www.equibase.com/premium/eqbLateChangeXMLDownload.cfm"

request = urllib2.Request(urlfile, headers=headers)
response = urllib2.urlopen(request)
with open("c:\test.xml", 'wb') as outfile:
    shutil.copyfileobj(response, outfile)

'Mozilla' User-Agent 字符串显然足以说服服务器提供文件。

我使用了 urllib2 (an updated version of the urllib library) and shutil.copyfileobj() 的组合来处理额外的 header 设置,然后将响应数据复制到文件中。 urllib.urlretrieve() 不支持添加 header,并且 urllib2 没有 urlretrieve() 等价物。