首页 > 解决方案 > 从网页中抓取 pdf

问题描述

我想从丹麦公司注册(csv register)下载给定公司的所有财务报告。一个例子可能是 Chr。汉森控股在以下链接:

https://datacvr.virk.dk/data/visenhed?enhedstype=virksomhed&id=28318677&soeg=chr%20hansen&type=undefined&language=da

具体来说,我想下载“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])

所有帮助和指导将不胜感激。

标签: pythonweb-scrapingbeautifulsoup

解决方案


你应该使用 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])

推荐阅读