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

时间:2015-01-13 17:59:15

标签: python xml urllib

我正在尝试从以下网址下载XML文件...

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

但是,以下代码不会下载除空文件之外的任何内容。我不确定如何“关注”上面的链接并获取生成的XML文件。希望这是可能的。

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

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:3)

服务器采用User-Agent嗅探;它会查看User-Agent标头,如果它不像它看到的那样,它将返回一个空响应。

您可以自己设置标题:

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字符串显然足以说服服务器提供该文件。

我使用了urllib2urllib库的更新版本)和shutil.copyfileobj()的组合来处理设置其他标头,然后将响应数据复制到文件中。 urllib.urlretrieve()不支持添加标头,urllib2没有urlretrieve()等效。

相关问题