Python beauthulsoup将标签文本提取到数组中

2024-05-15 17:40:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个特定类(其中有多个实例)中的b标记的文本提取到一个数组中。我用BeautifulSoup 4Python 3来做这个。在

我正在尝试网页浏览。这就是我的代码目前的样子。在

def cattest():
    subcat = soup.find_all('span', {"class": "zg_hrsr_ladder"})[x].findChildren()
    for i, child in enumerate(subcat):
        categories = child.text
        print(categories)

for x in range(0, len(cat)):
    cattest()

结果如下:

^{pr2}$

我想做的是从zg_hrsr_ladder元素的b标记中获取文本并将它们放入一个数组中。预期结果将是:

[Conditioners, Personal Care]

任何关于我如何实现这一目标的帮助都将是非常有帮助的。在


Tags: 实例in标记文本child网页for数组
2条回答

您可以使用列表理解并将'b'添加到findChildren的参数中

In [59]: [element.text for s in soup.find_all('span', {"class": "zg_hrsr_ladder"}) for element in s.findChildren('b')]
Out[59]: ['Conditioners', 'Personal Care']

这相当于

^{pr2}$

有很多方法可以做到这一点。这里有两个。从两个选项中选择一个:

from bs4 import BeautifulSoup
import requests

url = "https://www.amazon.ca/Abba-Moisture-Conditioner-Unisex-33-8-Ounce/dp/B000VZS3VW/ref=sr_1_1/145-7226897-1893421?ie=UTF8&qid=1532712550&sr=8-1&keywords=B000VZS3VW"

res = requests.get(url)
soup = BeautifulSoup(res.text,"lxml")

#using .find_next()
subcat = [item.find_next("b").text for item in soup.find_all('span', class_='zg_hrsr_ladder')]
print(subcat)

#using selector
subcat = [item.text for item in soup.select('span.zg_hrsr_ladder > b')]
print(subcat)

它们都产生了相同的结果:

^{pr2}$

相关问题 更多 >