有一个非常简洁的解决方案,使用漂亮的汤和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)
答案 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")]