python - 从部分 href 下载和保存 PDF?
问题描述
我正在尝试从以下位置下载并保存所有文件:https ://www.bankia.es/es/pymes-y-autonomos/buscador-documentacion-precontractual
有超过 1200 个文件可用,所以我在考虑使用某种循环。我意识到它们都包含相同的部分 href:href="/estaticos/documentosPRIIPS/xxxx.PDF"
这是我尝试过的:
soup = BeautifulSoup(html_doc, 'html.parser')
savepath = 'my_path' # set the desired path here for the files
options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {
"download.default_directory": "my_path",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"plugins.always_open_pdf_externally": True
}
)
url_bankia= "https://www.bankia.es/es/pymes-y-autonomos/buscador-documentacion-precontractual"
bankia_request = requests.get(url_bankia)
bankia_web = BeautifulSoup(bankia_request.text, "html.parser")
bankia_web.find_all("a", href=re.compile(r"^/estaticos/documentosPRIIPS/"))
解决方案
当您可以使用 requests 模块实现相同功能时,为什么还要使用 selenium?事实证明,这个URL包含 json 响应,您可以从中提取值,nombre_de_fichero
然后添加到它的最后一部分,https://www.bankia.es/estaticos/documentosPRIIPS/
以建立到 pdf 文件的完整链接。一个这样的链接应该看起来像https://www.bankia.es/estaticos/documentosPRIIPS/AC-AM-AP-EX-12M-EUR-CAD-20190508.PDF
。
以下脚本将在您的桌面位置创建一个文件夹,命名PdfFolder
为应该在其中下载文件。
import os
import requests
link = 'https://www.bankia.es/estaticos/documentosPRIIPS/json/jsonSimple.txt'
base = 'https://www.bankia.es/estaticos/documentosPRIIPS/{}'
dirf = os.environ['USERPROFILE'] + "\Desktop\PdfFolder"
if not os.path.exists(dirf):os.makedirs(dirf)
os.chdir(dirf)
res = requests.get(link,headers={"User-Agent":"Mozilla/5.0"})
for item in res.json():
if not 'nombre_de_fichero' in item: continue
link = base.format(item['nombre_de_fichero'])
filename = item['nombre_de_fichero'].split('.')[-2] + ".PDF"
with open(filename, 'wb') as f:
f.write(requests.get(link).content)
推荐阅读
- dataframe - 使用 Julia 中的列表对 DataFrame 进行子集化
- javascript - 使用 VBA 登录网站不取值(取键盘输入值)
- javascript - 如何在 keyIsDown 函数中使用 ASCII 码
- javascript - 使用 Vue.extend 时使用来自 SFC 的 I18n 翻译消息
- json - Oracle中如何使用json格式获取值
- angular - Angular textarea matInput:如何设置最大长度/行+最大行数
- c# - 来自 Enumerable 结果的 Concat 字符串
- ruby-on-rails - 导轨 | 迁移缺失 | 在本地工作,但不在 Heroku 上
- scala - Fork Join 与通用 monad scala?
- javascript - 平衡化学方程式