我正在尝试从以下 URL 中抓取列表:https://www.oncomap.de/centers?selectedOrgan=Darm&selectedCounty=Deutschland
使用 Chrome 的开发者工具,我发现我感兴趣的内容在 body > app-root > app-top > div ...
里面.我尝试使用 Python 的 BeautifulSoup4
查找此内容包裹。不幸的是,无法深入了解 app-root
之外的结构。标签。我正在使用以下代码:
导入请求
从 bs4 导入 BeautifulSoup
进口打印品
标题 = {
'访问控制允许来源':'*',
'访问控制允许方法':'GET',
'访问控制允许标题':'内容类型',
'访问控制-最大年龄':'3600',
'用户代理': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'
}
url = 'https://www.oncomap.de/centers?selectedOrgan=Darm&selectedCounty=Deutschland'
req = requests.get(url, headers)
汤 = BeautifulSoup(req.content, "html-parser")
mat_row = soup.select('body > app-root')
pp = pprint.PrettyPrinter()
对于 mat_row[0].descendants 中的 child :
pp.pprint( child )
此代码没有输出 - 没有后代(也尝试过 children
)被打印。我想我在这里处理一个 ReactJS div。有人会提示如何处理此类内容吗?具体来说,我热衷于将页面上的主列表刮成 Python 可读的表格。感谢您的帮助!
最佳答案
数据通过 JavaScript 动态加载。但是你可以使用 requests
加载数据的模块:
import json
import requests
from bs4 import BeautifulSoup
clinics_url = 'https://back.oncomap.de/api/direct/fulldb_clinics'
centers_url = 'https://back.oncomap.de/api/direct/fulldb_centers'
data1 = requests.get(clinics_url).json()
data2 = requests.get(centers_url).json()
clinics = {d['clinic_nr']:d for d in data1}
# uncomment this to print all data:
# print(json.dumps(data1, indent=4))
# print(json.dumps(data2, indent=4))
for c in data2:
print(c['reg_nr'], c['inst1'], clinics.get(c['clinic_nr'], {}).get('inst1', '-'), c['url'], sep='\t')
打印:AB-Z001 G Brustzentrum Stuttgart am Marienhospital Marienhospital Stuttgart https://www.marienhospital-stuttgart.de/interdisziplinaere-zentren/brustzentrum/
FAB-Z007-1 G Universitäts-Brustzentrum Tübingen Universitätsklinikum Tübingen, CCC Tübingen-Stuttgart www.uni-frauenklinik-tuebingen.de/brustzentrum.html
FAB-Z010 G Interdisziplinäres Brustkrebszentrum der Charité (IBZ) im Charité Comprehensive Cancer Center Charité - Campus Mitte https://cccc.charite.de/leistungen/organbereiche/brustkrebs/
FAB-Z012-1 G Kooperatives Brustzentrum Klinikum Region Hannover KRH Klinikum Siloah www.krh.eu/klinikum/SOH/zentren/brustzentrum
FAB-Z016 G Brustzentrum Robert-Bosch-Krankenhaus Robert-Bosch-Krankenhaus; Klinik Schillerhöhe http://www.rbk.de/disziplinen/interdisziplinaere-zentren/brustzentrum.html
FAB-Z017 G Brustzentrum Halle des Universitätsklinikums Halle (Saale) Universitäts-Klinikum Halle-Saale www.unifrauenklinik-halle.de
FAB-Z020 G Brustzentrum im Sana Klinikum Lichtenberg Sana Klinikum Lichtenberg http://www.sana-kl.de/unser-leistungsspektrum/kliniken-institute/brustzentrum-des-sana-klinikum-lichtenberg.html
FAB-Z021 G Interdisziplinäres Brustzentrum der ALB FILS KLINIKEN Klinik am Eichert Göppingen www.alb-fils-kliniken.de
FAB-Z022 Kooperatives Brustzentrum Landshut Klinikum Landshut www.klinikum-landshut.de
FAB-Z023 G Brustzentrum Saar Mitte CaritasKlinikum Saarbrücken St. Theresia www.caritasklinik.de
FAB-Z024 G Brustzentrum am Universitätsklinikum Hamburg-Eppendorf Universitätsklinikum Hamburg-Eppendorf www.uke.de/kliniken-institute/zentren/brustzentrum/index.html
FAB-Z025-1 Südthüringer Brustzentrum Suhl / Meiningen SRH Zentralklinikum Suhl www.srh.de
FAB-Z026 G Brustzentrum Klinikum Oldenburg Klinikum Oldenburg www.klinikum-oldenburg.de
...and so on.
关于Python - 从 ReactJS div 中抓取列表内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62632749/