【发布时间】:2021-02-10 18:01:20
【问题描述】:
按照 BeautifulSoup 的文档,我正在尝试从网页下载特定文件。首先尝试找到包含文件名的链接:
import re
import requests
from bs4 import BeautifulSoup
url = requests.get("https://www.bancentral.gov.do/a/d/2538-mercado-cambiario")
parsed = BeautifulSoup(url.text, "html.parser")
link = parsed.find("a", text=re.compile("TASA_DOLAR_REFERENCIA_MC.xls"))
path = link.get('href')
print(f"{path}")
但没有成功。然后尝试打印该页面上的每个链接,我没有得到任何链接:
import re
import requests
from bs4 import BeautifulSoup
url = requests.get("https://www.bancentral.gov.do/a/d/2538-mercado-cambiario")
parsed = BeautifulSoup(url.text, "html.parser")
link = parsed.find_all('a')
for links in parsed.find_all("a href"):
print(links.get('a href'))
看起来文件的url是动态的,它在url的末尾添加了一个?v=123456789参数,就像文件版本一样,所以我需要使用文件名下载文件。
谢谢。
【问题讨论】:
-
link = parsed.find_all('a')从未使用过。但这没关系,因为您想要的数据不在 HTML 中。您加载的页面会触发一个请求,该请求使用有效负载 id=2538&languageName=es 命中 bancentral.gov.do/Home/GetContentForRender 以获取包含 xlses 的 HTML 内容,但这些没有 v= 键,所以我假设这是由 JS 添加的。所有这些链接都具有完全相同的密钥,而且看起来并不重要——我可以使用 GET 直接访问文件,而不需要 v=。长话短说,你可以直接从 URL 下载文件,不是吗? -
你是对的@ggorlen。!我
标签: python-3.x beautifulsoup python-requests