python - 如何使用 python beautiful soup 只获取 level 1 navigableText?

标签 python beautifulsoup

我正在使用漂亮的汤从这个示例 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/

相关文章:

python - beautifulsoup4在mac上使用python3安装和导入

python - 什么时候 Python 变量直接指向内存,什么时候通过另一个变量间接指向内存?

python - 检查 Python 字典中是否存在键/值对

python - Python 中的 random.sample 和 random.shuffle 有什么区别

Python 构造嵌套的 Try except 语句

python - 从 Tableau Public 仪表板中抓取数据

python - 尝试使用 selenium Python 循环搜索查询时在 find_element_by_partial_link_text() 中出错

python - sqlalchemy psycopg2.errors.InsufficientPrivilege : permission denied for relation <<table>>

html - 使用 bs4 查找和删除 HTML5 data-* 属性

python - BeautifulSoup4 无法在我的托管服务器上运行