我正在尝试从以下网址下载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")
任何帮助将不胜感激!谢谢!
答案 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字符串显然足以说服服务器提供该文件。
我使用了urllib2
(urllib
库的更新版本)和shutil.copyfileobj()
的组合来处理设置其他标头,然后将响应数据复制到文件中。 urllib.urlretrieve()
不支持添加标头,urllib2
没有urlretrieve()
等效。