bs4:使用相同的 class - python 拆分文本

bs4: splitting text with same class - python

我是第一次抓取网页,运行遇到了一个问题:有些class有相同的名字。

这是代码:

testlink = 'https://www.ah.nl/producten/product/wi387906/wasa-volkoren'

r = requests.get(testlink)
soup = BeautifulSoup(r.content, 'html.parser')

products = (soup.findAll('dd', class_='product-info-definition-list_value__kspp6'))

这是输出

[<dd class="product-info-definition-list_value__kspp6">13 g</dd>, <dd class="product-info-definition-list_value__kspp6">20</dd>, <dd class="product-info-definition-list_value__kspp6">Rogge, Glutenbevattende Granen</dd>, <dd class="product-info-definition-list_value__kspp6">Sesamzaad, Melk</dd>]

我需要获取第 3 个 class(Rogge,Glutenbevattende G运行en)...我正在使用这个 link 进行测试,最终想抓取多个页面的网站。有人有什么建议吗?

谢谢!

您可以 select 所有具有 class 值 product-info-definition-list_value__kspp6 的 dd 标签和列表切片

import requests
from bs4 import BeautifulSoup
url='https://www.ah.nl/producten/pasta-rijst-en-wereldkeuken?page={page}'
for page in range(1,11):
    req = requests.get(url.format(page=page))
    soup = BeautifulSoup(req.content, 'html.parser')

    for link in soup.select('div[class="product-card-portrait_content__2xN-b"] a'):
        abs_url = 'https://www.ah.nl' + link.get('href')
        #print(abs_url)
        

        req2 = requests.get(abs_url)
        soup2 = BeautifulSoup(req2.content, 'html.parser')
        dd = [d.get_text() for d in soup2.select('dd[class="product-info-definition-list_value__kspp6"]')][2:-2]
        print(dd)