suchen

Heim  >  Fragen und Antworten  >  Hauptteil

BeautifulSoup nimmt alle Daten auf, aber .findAll() gibt nur Links zu einem übergeordneten Element zurück

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.

P粉654894952P粉654894952439 Tage vor431

Antworte allen(1)Ich werde antworten

  • P粉553428780

    P粉5534287802023-09-15 11:25:57

    您在页面上看到的数据以 Json 形式存储在