我使用漂亮的汤来获取此示例html代码中的文本:
....
<div style="s1">
<div style="s2">Here is text 1</div>
<div style="s3">Here is text 2</div>
Here is text 3 and this is what I want.
</div>
....
文本1和文本2处于同一级别2,文本3位于上级1.我只想获取文本3并使用它:
for anchor in tbody.findAll('div', style="s1"):
review=anchor.text
print review
但是这些代码让我得到了所有文本1,2,3。我如何才能获得第一级文本3?
答案 0 :(得分:3)
类似的东西:
for anchor in tbody.findAll('div', style="s1"):
text = ''.join([x for x in anchor.contents if isinstance(x, bs4.element.NavigableString)])
的工作原理。只要知道你也会在那里得到换行符,所以.strip()
可能是必要的。
例如:
for anchor in tbody.findAll('div', style="s1"):
text = ''.join([x for x in anchor.contents if isinstance(x, bs4.element.NavigableString)])
print([text])
print([text.strip()])
打印
[u'\n\n\nHere is text 3 and this is what I want.\n']
[u'Here is text 3 and this is what I want.']
(我将它们放在列表中,以便您可以看到换行符。)
答案 1 :(得分:0)
也许你想要的是
tbody.findAll('div', style="s1")[0].string
或您正在寻找的div.s1的索引。