如何用Python从法兰克福证券交易所下载数据并解决403 Forbidden错误?(法兰克福.证券交易所.如何用.错误.解决...)
从Blob URL下载法兰克福证券交易所数据:Python解决方案
许多Python用户在下载网络文件时,常遇到从Blob URL下载文件的问题。本文将演示如何用Python下载法兰克福证券交易所的“主数据(下载,xlsx)”Excel文件,并解决使用urllib和wget下载时只得到289字节不可读文件的难题。
根本原因在于,直接使用URL下载时,服务器会识别请求来源并返回403 Forbidden错误,导致下载的并非Excel文件,而是一个小型的HTML代码片段。这是因为服务器检查了请求的User-Agent字段,如果未指定或被识别为脚本请求,则拒绝访问。
解决方法是伪造一个User-Agent,使其看起来像正常的浏览器请求。以下代码分别提供Python 2和Python 3的解决方案:
Python 3代码:
import urllib.request as request url = 'http://www.xetra.com/blob/1193366/b2f210876702b8e08e40b8ecb769a02e/data/all-tradable-etfs-etcs-and-etns.xlsx' # 使用Safari的User-Agent fake_useragent = 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25' req = request.Request(url, headers={'User-Agent': fake_useragent}) with request.urlopen(req) as response: with open('output.xlsx', 'wb') as output_file: output_file.write(response.read()) print("文件已成功下载到 output.xlsx")
Python 2代码:
import urllib2 url = 'http://www.xetra.com/blob/1193366/b2f210876702b8e08e40b8ecb769a02e/data/All-tradable-ETFs-ETCs-and-ETNs.xlsx' # 使用Safari的User-Agent fake_useragent = 'Mozilla/5.0 (iPad; CPU OS 6_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5355d Safari/8536.25' req = urllib2.Request(url, headers={'User-Agent': fake_useragent}) with urllib2.urlopen(req) as response: with open('output.xlsx', 'wb') as output_file: output_file.write(response.read()) print("文件已成功下载到 output.xlsx")
通过模拟Safari浏览器的User-Agent,代码成功绕过了403 Forbidden错误,下载了目标Excel文件。 代码中已将数据写入文件output.xlsx,避免了直接打印大型文件到控制台的问题。 请确保您拥有写入当前目录的权限。
以上就是如何用Python从法兰克福证券交易所下载数据并解决403 Forbidden错误?的详细内容,更多请关注知识资源分享宝库其它相关文章!