使用 Python 从 Blob URL 下载文件

Win*_*ags 6 python blob urllib download

我希望让我的 Python 脚本从法兰克福证券交易所网页下载主数据(下载,XLSX) Excel 文件。

\n\n

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

\n\n
\n

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

\n
\n\n

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

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

  • \n
  • 如果是这样,如果存在 \xe2\x80\x93 这样的东西,是否有必要揭露 Blob \xe2\x80\x93 背后的“真实”URL?如何?我担心的是上面的链接不是静态的,而是经常变化的。

  • \n
\n

Jeo*_*eon 5

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

蟒蛇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())
Run Code Online (Sandbox Code Playgroud)

蟒蛇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())
Run Code Online (Sandbox Code Playgroud)