python - 从网页中抓取 pdf
问题描述
我想从丹麦公司注册(csv register)下载给定公司的所有财务报告。一个例子可能是 Chr。汉森控股在以下链接:
具体来说,我想下载“Regnskaber”(=财务报告)选项卡下的所有 PDF。我以前没有使用 Python 进行网页抓取的经验。我尝试使用 BeautifulSoup,但鉴于我不存在的经验,我找不到从响应中搜索的正确方法。
以下是我尝试过的,但没有打印任何数据(即它没有找到任何 pdf)。
from urllib.parse import urljoin
from bs4 import BeautifulSoup
web_page = "https://datacvr.virk.dk/data/visenhed?
enhedstype=virksomhed&id=28318677&soeg=chr%20hansen&type=undefined&language=da"
response = requests.get(web_page)
soup = BeautifulSoup(response.text)
soup.findAll('accordion-toggle')
for link in soup.select("a[href$='.pdf']"):
print(link['href'].split('/')[-1])
所有帮助和指导将不胜感激。
解决方案
你应该使用 select 而不是 findAll
from urllib.parse import urljoin
from bs4 import BeautifulSoup
web_page = "https://datacvr.virk.dk/data/visenhed?
enhedstype=virksomhed&id=28318677&soeg=chr%20hansen&type=undefined&language=da"
response = requests.get(web_page)
soup = BeautifulSoup(response.text, 'lxml')
pdfs = soup.select('div[id="accordion-Regnskaber-og-nogletal"] a[data-type="PDF"]')
for link in pdfs:
print(link['href'].split('/')[-1])
推荐阅读
- python - Python multiprocessing not executing in parallel
- jboss - Wildfly 中 Jacorb 的问题
- python - Pipenv 没有从 asdf 获取 Python 版本
- java - 如何关闭 Jackson2HttpMessageConverter
- scala - 如何使用akka-http设计一个rest api以便于测试?
- javascript - 在sequelize中按长度排序数组
- android - Creating an android custom view instead of multiple views with different data
- r - R - 将 POSIXct 格式化为列表中的日期
- multithreading - 使用 python 跟踪调试
- windows - 这是匹配文件名的 for 命令中的错误吗?