BeautifulSoup ingère toutes les données, mais .findAll() ne renvoie que les liens vers un seul parent
P粉654894952
P粉654894952 2023-09-14 12:14:43
0
1
374

J'essaie de gratter un site Web en utilisant BeautifulSoup en Python. Toutes les données sont ingérées, y compris tous les liens auxquels j'essaie d'accéder. Cependant, lorsque j'utilise la fonction .findAll(), elle ne renvoie qu'une partie du lien que je recherche. C'est-à-dire que seuls les liens dans le XPath suivant sont renvoyés

/html/body/div[1]/div/div[2]/div/div[2]/div[1]

Cela ignorera les liens dans /html/body/div[1]/div/div[2]/div/div[2]/div[2] /html/body/div[1]/div/div[2]/div/div[2]/div[3] Attends

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)

Je souhaite que tous les liens soient ajoutés à la liste mp_pages, mais cela ne va qu'à un seul parent (liens commençant par A) et semble s'arrêter au dernier enfant au lieu de continuer.

J'ai vu des questions similaires où la réponse était d'utiliser du sélénium à cause de javascript, mais comme tous les liens sont dans le contenu, cela n'a aucun sens.

P粉654894952
P粉654894952

répondre à tous (1)
P粉553428780

Les données que vous voyez sur la page sont stockées au format Json danséléments. Pour l'analyser, vous pouvez utiliser l'exemple suivant :

import json import requests import pandas as pd from bs4 import BeautifulSoup url = 'https://www.riksdagen.se/sv/ledamoter-och-partier/ledamoterna/' soup = BeautifulSoup(requests.get(url).content, 'html.parser') data = json.loads(soup.select_one('#__NEXT_DATA__').text) # print(json.dumps(data, indent=4)) all_data = [] for c in data['props']['pageProps']['contentApiData']['commissioners']: all_data.append((f'{c["callingName"]} {c["surname"]}', c['url'])) df = pd.DataFrame(all_data, columns=['Name', 'URL']) print(df)

Impression :

Name URL 0 Fredrik Ahlstedt https://www.riksdagen.se/sv/ledamoter-och-partier/ledamot/fredrik-ahlstedt_8403346f-0f0c-4d48-bbd0-f6b43b368873/ 1 Emma Ahlström Köster https://www.riksdagen.se/sv/ledamoter-och-partier/ledamot/emma-ahlstrom-koster_e09d9076-28c7-4583-a17f-7a776de7f01f/ 2 Alireza Akhondi https://www.riksdagen.se/sv/ledamoter-och-partier/ledamot/alireza-akhondi_4099ff9c-5d27-4605-b018-98fb229d94fa/ 3 Anders Alftberg https://www.riksdagen.se/sv/ledamoter-och-partier/ledamot/anders-alftberg_f0d945f3-9449-458e-ba40-1a0da1a72303/ 4 Leila Ali Elmi https://www.riksdagen.se/sv/ledamoter-och-partier/ledamot/leila-ali-elmi_5997ba96-4f01-46f4-8bd8-e1411a9d503b/ 5 Janine Alm Ericson https://www.riksdagen.se/sv/ledamoter-och-partier/ledamot/janine-alm-ericson_7e408079-a5cd-432a-a30e-fd61fd15c65a/ 6 Ann-Sofie Alm https://www.riksdagen.se/sv/ledamoter-och-partier/ledamot/ann-sofie-alm_f91f6a86-591c-449c-b3dd-1fdaa86338cd/ 7 Sofia Amloh https://www.riksdagen.se/sv/ledamoter-och-partier/ledamot/sofia-amloh_359e75f3-519e-49d7-b155-ada488e621ea/ 8 Andrea Andersson Tay https://www.riksdagen.se/sv/ledamoter-och-partier/ledamot/andrea-andersson-tay_352b875d-e44d-43f5-bf93-e507770c12de/ ...and so on.
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal
    À propos de nous Clause de non-responsabilité Sitemap
    Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!