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

Python 如何从给定的URL下载此XML文件,python,xml,urllib,Python,Xml,Urllib,我正在尝试从以下URL下载XML文件 但是,下面的代码只下载一个空文件。我不确定如何“遵循”上面的链接并获取生成的XML文件。希望这是可能的 import urllib urlfile = "http://www.equibase.com/premium/eqbLateChangeXMLDownload.cfm" urllib.urlretrieve(urlfile,"c:\\test.xml") 任何帮助都将不胜感激!谢谢 服务器采用用户代理嗅探;它查看用户代理头,如果它不喜欢它看到的内容

我正在尝试从以下URL下载XML文件

但是,下面的代码只下载一个空文件。我不确定如何“遵循”上面的链接并获取生成的XML文件。希望这是可能的

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

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

服务器采用用户代理嗅探;它查看用户代理头,如果它不喜欢它看到的内容,它将返回一个空响应

您可以自己设置标题:

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'
用户代理字符串显然足以说服服务器提供文件


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

谢谢!同时也感谢机器人们抬起头来。我现在可能要手动下载了。@TravisVOX:我误读了
robots.txt
;他们不允许走一条和你很像的路。我再次删除了它,他们的
robots.txt
没有提到这个URL,所以我们可以假设它可以抓取。@MartijnPieters您能解释一下如何验证或发现服务器/页面正在使用用户代理服务吗?…并且将用户代理设置为
“Mozilla”
就足够了。@MartijnPieters,使用shutil而不仅仅是编写response.read()有什么好处?