Python下载法兰克福证券交易所Blob URL数据时,如何解决文件大小异常和内容不可读的问题?(法兰克福.文件大小.证券交易所.如何解决.可读...)

wufei1232025-03-08python2

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数据时,如何解决文件大小异常和内容不可读的问题?的详细内容,更多请关注知识资源分享宝库其它相关文章!

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。