如何在美丽的汤中使用find_all显示文字?

时间:2013-04-20 09:11:15

标签: python text python-2.7 beautifulsoup findall

有一个非常简洁的解决方案,使用漂亮的汤和find https://stackoverflow.com/a/8994150/1063287来显示来自div的文字:

result = soup.find('div', {'class' :'flagPageTitle'}).text

我想在以下场景中应用相同的逻辑:

content = original_content("div","class1 class2")

如果我将其修改为:

content = original_content("div","class1 class2").text

我收到错误:

AttributeError: 'ResultSet' object has no attribute 'text'

任何人都可以告诉我如何使用最初显示的相同逻辑,但在我使用如上所述的find_all的情况下? (注意我使用find_all的快捷方式而不是键入它,请参阅here

谢谢你。

1 个答案:

答案 0 :(得分:2)

当您直接调用元素时,您正在使用隐含的.find_all()方法,该方法返回结果集(类似列表的对象)。使用limit不会更改返回的内容,只会返回多少内容。

如果您想获取该集合的第一个元素,请使用切片:

original_content("div","class1 class2", limit=1)[0].text

或明确说明并改为使用.find()

original_content.find("div","class1 class2").text

要获取所有匹配项的文本,您需要循环结果集。列表理解最简单:

[el.text for el in original_content("div","class1 class2")]