我想下載所有以.qrs,.dat,.hea結尾的文件並將它們存儲到本網站的本地文件夾中。如何使用python和BeautifulSoup從網站下載.qrs文件?
https://physionet.org/physiobank/database/shareedb/
我試圖修改從下面的鏈接的解決方案。
這是我修改了代碼:
import os
from bs4 import BeautifulSoup
# Python 3.x
from urllib.request import urlopen, urlretrieve
URL = 'https://physionet.org/physiobank/database/shareedb/'
OUTPUT_DIR = '' # path to output folder, '.' or '' uses current folder
u = urlopen(URL)
try:
html = u.read().decode('utf-8')
finally:
u.close()
soup = BeautifulSoup(html, "html.parser")
for link in soup.select('a[href^="https://"]'): # or a[href*="shareedb/0"]
href = link.get('href')
if not any(href.endswith(x) for x in ['.dat','.hea','.qrs']):
continue
filename = os.path.join(OUTPUT_DIR, href.rsplit('/', 1)[-1])
# We need a https:// URL for this site
# href = href.replace('http://','https://')
print("Downloading %s to %s..." % (href, filename))
urlretrieve(href, filename)
print("Done.")
當我運行這段代碼,它不提取從目標頁面的文件,也沒有輸出任何故障消息(例如「失敗去下載')。
經過一些調試後,我看到在我的情況下,非文件被選中。我懷疑它必須做更多的HTML的結構。
如何使用Python將這些文件下載到本地目錄?
我也試過你的解決方案,工作正常。你能解釋爲什麼它下載這些文件需要這麼長時間嗎? – Molnia
這可能是服務器端的限制。 –
感謝您的乾淨的代碼。儘管@Teemu Risikko提供了一個非常好的迴應,但您的解決方案提供了一種不同的方法,但它的效率稍高一點,因爲它可以在更短的時間內下載文件。 可以請你告訴我或猜爲什麼它更快,雖然你使用的是嵌套循環? – Molnia