我正在使用漂亮的汤从这个示例 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?
最佳答案
类似于:
for anchor in tbody.findAll('div', style="s1"):
text = ''.join([x for x in anchor.contents if isinstance(x, bs4.element.NavigableString)])
有效。只知道你也会在那里换行,所以 .strip()
ing 可能是必要的。
例如:
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.']
(我将它们放在列表中以便您可以看到换行符。)
关于python - 如何使用 python beautiful soup 只获取 level 1 navigableText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17180783/