Skip to main content
 首页 » 编程设计

python之访问深层类层次结构中的所有 href 链接

2025年05月04日55zfyouxi

我正在尝试从网站访问所有 href 链接,准确地说是搜索结果。我的第一个意图是获取所有链接,然后进一步查看它。问题是 --> 我从网站上获得了一些链接,但没有搜索结果的链接。这是我的代码的一个版本。

from selenium import webdriver 
from htmldom import htmldom 
dom = htmldom.HtmlDom("myWebsite") 
dom = dom.createDom() 
 
p_links = dom.find("a") 
for link in p_links: 
    print("URL: " +link.attr("href")) 

这是该特定网站的 HTML 屏幕。在屏幕上,我标记了我以后尝试访问的 href-link。我愿意接受任何帮助,无论是在 Selenium、htmldom、b4soup 等方面。

请您参考如下方法:

您要获取的数据是通过 AJAX 请求加载的。因此,您不能在获取页面源后直接抓取它们。但是,AJAX 请求被发送到这个 URL:

https://open.nrw/solr/collection1/select?q=*%3A*&fl=validated_data_dict%20title%20groups%20notes%20maintainer%20metadata_modified%20res_format%20author_email%20name%20extras_opennrw_spatial%20author%20extras_opennrw_groups%20extras_opennrw_format%20license_id&wt=json&fq=-type:harvest+&sort=title_string%20asc&indent=true&rows=20 

返回 JSON 格式的数据。您可以使用 requests 模块来抓取这些数据。

import requests 
 
BASE_URL = 'https://open.nrw/dataset/' 
 
r = requests.get('https://open.nrw/solr/collection1/select?q=*%3A*&fl=validated_data_dict%20title%20groups%20notes%20maintainer%20metadata_modified%20res_format%20author_email%20name%20extras_opennrw_spatial%20author%20extras_opennrw_groups%20extras_opennrw_format%20license_id&wt=json&fq=-type:harvest+&sort=title_string%20asc&indent=true&rows=20') 
data = r.json() 
for item in data['response']['docs']: 
    print(BASE_URL + item['name']) 

输出:

https://open.nrw/dataset/mags-90-10-dezilsverhaeltnis-der-aequivalenzeinkommen-1512029759099 
https://open.nrw/dataset/alkis-nutzungsarten-pro-baublock-wuppertal-w 
https://open.nrw/dataset/allgemein-bildende-schulen-am-1510-nach-schulformen-schulen-schueler-und-lehrerbestand-w 
https://open.nrw/dataset/altersgruppen-in-meerbusch-gesamt-meerb 
https://open.nrw/dataset/amtliche-stadtkarte-wuppertal-raster-w 
https://open.nrw/dataset/mais-anteil-abhaengig-erwerbstaetiger-mit-geringfuegiger-beschaeftigung-1477312040433 
https://open.nrw/dataset/mags-anteil-der-stillen-reserve-nach-geschlecht-und-altersgruppen-1512033735012 
https://open.nrw/dataset/mags-anteil-der-vermoegenslosen-in-nrw-nach-beruflicher-stellung-1512032087083 
https://open.nrw/dataset/anzahl-kinderspielplatze-meerb 
https://open.nrw/dataset/anzahl-der-sitzungen-von-rat-und-ausschussen-meerb 
https://open.nrw/dataset/anzahl-medizinischer-anwendungen-den-oeffentlichen-baedern-duesseldorfs-seit-2006-d 
https://open.nrw/dataset/arbeitslose-den-wohnquartieren-duesseldorf-d 
https://open.nrw/dataset/arbeitsmarktstatistik-arbeitslose-gelsenkirchen-ge 
https://open.nrw/dataset/arbeitsmarktstatistik-arbeitslose-nach-rechtskreisen-des-sgb-ge 
https://open.nrw/dataset/arbeitsmarktstatistik-arbeitslose-nach-stadtteilen-gelsenkirchen-ge 
https://open.nrw/dataset/arbeitsmarktstatistik-sgb-ii-rechtskreis-auf-stadtteilebene-gelsenkirchen-ge 
https://open.nrw/dataset/arbeitsmarktstatistik-sozialversicherungspflichtige-auf-stadtteilebene-gelsenkirchen-ge 
https://open.nrw/dataset/verkehrszentrale-arbeitsstellen-in-nordrhein-westfalen-1476688294843 
https://open.nrw/dataset/mags-arbeitsvolumen-nach-wirtschaftssektoren-1512025235377 
https://open.nrw/dataset/mais-armutsrisikoquoten-nach-geschlecht-und-migrationsstatus-der-personen-1477313317038 

如您所见,这返回了前 20 个 URL。当您第一次加载页面时,只有 20 个项目存在。但是,如果您向下滚动,则会加载更多内容。要获取更多项目,您可以更改 URL 中的查询字符串参数。 URL 以 rows=20 结尾。您可以更改此数字以获得所需数量的结果。