BeautifulSoup 摄取所有数据,但 .findAll() 仅返回一个父级的链接
P粉654894952
P粉654894952 2023-09-14 12:14:43
0
1
264

我正在尝试使用 Python 中的 BeautifulSoup 抓取网站。所有数据都被摄取,包括我试图访问的所有链接。但是,当我使用 .findAll() 函数时,它仅返回我正在查找的链接的一部分。也就是说只返回后面xpath中的链接

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

这会忽略中的链接 /html/body/div[1]/div/div[2]/div/div[2]/div[2] /html/body/div[1]/div/div[2]/div/div[2]/div[3] 等等

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)

我希望所有链接都附加到 mp_pages 列表中,但它只进入一个父级(以 A 开头的链接),似乎停在最后一个子级,而不是继续。

我见过类似的问题,其中答案是由于javascript而使用selenium,但由于所有链接都在内容中,所以这是没有意义的。

P粉654894952
P粉654894952

全部回复(1)
P粉553428780

您在页面上看到的数据以 Json 形式存储在 元素中。要解析它,您可以使用下一个示例:

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)

打印:

                              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.
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!