python - 使用 Python 从 Blob URL 下载文件

标签 python download blob urllib

我希望我的 Python 脚本从此 Frankfurt stock exchange webpage 下载主数据(下载,XLSX) Excel 文件.

当用urrlibwget检索它时,结果发现URL指向一个Blob并且下载的文件只有289字节且不可读。

http://www.xetra.com/blob/1193366/b2f210876702b8e08e40b8ecb769a02e/data/All-tradable-ETFs-ETCs-and-ETNs.xlsx

我完全不熟悉 Blob,并且有以下问题:

  • 使用 Python 能否成功检索“Blob 后面”的文件?

  • 如果是这样,是否有必要揭开 Blob 背后的“真实”URL(如果存在这样的事情)以及如何揭开?我担心的是上面的链接不是静态的,而是经常变化的。

最佳答案

那个289字节长的东西可能是403禁止页面的HTML代码。发生这种情况是因为服务器很智能,如果您的代码未指定用户代理,服务器会拒绝。

Python 3

# python3
import urllib.request as request

url = 'http://www.xetra.com/blob/1193366/b2f210876702b8e08e40b8ecb769a02e/data/All-tradable-ETFs-ETCs-and-ETNs.xlsx'
# fake user agent of Safari
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'
r = request.Request(url, headers={'User-Agent': fake_useragent})
f = request.urlopen(r)

# print or write
print(f.read())

Python 2

# python2
import urllib2

url = 'http://www.xetra.com/blob/1193366/b2f210876702b8e08e40b8ecb769a02e/data/All-tradable-ETFs-ETCs-and-ETNs.xlsx'
# fake user agent of safari
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'

r = urllib2.Request(url, headers={'User-Agent': fake_useragent})
f = urllib2.urlopen(r)

print(f.read())

关于python - 使用 Python 从 Blob URL 下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517522/

相关文章:

python - 在 Intellij/Pycharm 中运行 Django 时出错

python - 如何在 Python 中打印 Unicode 字符?

javascript - 我如何使用 JS 将 blob 对象显示为图像

python - 类型错误 : only length-1 arrays can be converted to Python scalars while trying to exponentially fit data

python - osetests 覆盖率报告跳过了一些 .py 文件,但不确定原因

javascript - 如何下载包含javascript代码查找结果的网站?

download - 获取 API 以强制下载文件

visual-studio - 禁用 VS' "downloading public symbols"

node.js - 在nodejs应用程序中使用PDFKit发送动态创建的PDF作为附件