Python下载法兰克福证券交易所Blob URL数据时,如何解决文件大小异常和内容不可读的问题?(法兰克福.文件大小.证券交易所.如何解决.可读...)
从法兰克福证券交易所下载数据:解决Blob URL下载问题
许多开发者在使用Python下载网络文件时,常常会遇到Blob URL导致文件大小异常或内容无法读取的问题。本文将以法兰克福证券交易所的Excel文件下载为例,演示如何使用Python解决此类问题。
问题:直接使用urllib或wget访问法兰克福证券交易所提供的Blob URL下载Excel文件时,下载文件可能只有几百字节,且内容无法读取。这是因为服务器会识别未设置用户代理的请求,并返回错误信息而非实际文件内容。
解决方案:关键在于模拟浏览器行为,向服务器发送包含用户代理信息的请求。以下代码分别提供Python 2和Python 3的解决方案:
Python 3:
import urllib.request url = 'http://www.xetra.com/blob/1193366/b2f210876702b8e08e40b8ecb769a02e/data/all-tradable-etfs-etcs-and-etns.xlsx' user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' # 使用更通用的用户代理 req = urllib.request.Request(url, headers={'User-Agent': user_agent}) with urllib.request.urlopen(req) as response, open('etf_data.xlsx', 'wb') as outfile: outfile.write(response.read()) print("文件已成功下载到 etf_data.xlsx")
Python 2:
import urllib2 url = 'http://www.xetra.com/blob/1193366/b2f210876702b8e08e40b8ecb769a02e/data/All-tradable-ETFs-ETCs-and-ETNs.xlsx' user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' # 使用更通用的用户代理 req = urllib2.Request(url, headers={'User-Agent': user_agent}) with urllib2.urlopen(req) as response, open('etf_data.xlsx', 'wb') as outfile: outfile.write(response.read()) print("文件已成功下载到 etf_data.xlsx")
代码说明:
- 关键在于设置User-Agent头部信息,模拟真实浏览器请求,避免服务器返回错误信息。
- 使用了更通用的Chrome用户代理字符串,以提高兼容性。
- 代码将下载的文件保存为etf_data.xlsx。 请确保程序拥有写入权限。
- 使用了with语句,确保文件正确关闭。
- url为示例,实际使用时请替换为目标URL。
通过模拟浏览器行为,成功下载文件,解决文件大小异常和内容不可读的问题。 请注意,频繁访问网站可能会违反网站的使用条款,请谨慎使用。
以上就是Python下载法兰克福证券交易所Blob URL数据时,如何解决文件大小异常和内容不可读的问题?的详细内容,更多请关注知识资源分享宝库其它相关文章!