Ich versuche, eine Website mit BeautifulSoup in Python zu crawlen. Alle Daten werden erfasst, einschließlich aller Links, auf die ich zuzugreifen versuche. Wenn ich jedoch die Funktion .findAll() verwende, gibt sie nur einen Teil des gesuchten Links zurück. Das heißt, es werden nur die Links im folgenden XPath zurückgegeben
/html/body/div[1]/div/div[2]/div/div[2]/div[1]
Dadurch werden Links ignoriert /html/body/div[1]/div/div[2]/div/div[2]/div[2] /html/body/div[1]/div/div[2]/div/div[2]/div[3] Warte
import requests from bs4 import BeautifulSoup url = "https://www.riksdagen.se/sv/ledamoter-och-partier/ledamoterna/" response = requests.get(url) content = BeautifulSoup(response.content, "html.parser") mp_pages = [] mps = content.findAll(attrs = {'class': 'sc-907102a3-0 sc-e6d2fd61-0 gOAsvA jBTDjv'}) for x in mps: mp_pages.append(x.get('href')) print(mp_pages)
Ich möchte, dass alle Links an die mp_pages-Liste angehängt werden, aber sie führt nur zu einem übergeordneten Element (Links, die mit A beginnen) und scheint beim letzten untergeordneten Element anzuhalten, anstatt fortzufahren.
Ich habe ähnliche Fragen gesehen, bei denen die Antwort aufgrund von Javascript darin bestand, Selen zu verwenden, aber da sich alle Links im Inhalt befinden, ergibt das keinen Sinn.
您在页面上看到的数据以 Json 形式存储在
元素中。要解析它,您可以使用下一个示例:
打印: