【问题标题】:BeautifulSoup: finding tag text with embedded tagBeautifulSoup:查找带有嵌入标签的标签文本
【发布时间】:2016-01-10 18:26:01
【问题描述】:

我正在尝试使用 Python 中的 BeautifulSoup 4,通过其随附的文本在网页中找到 <a> 标记。我使用了一个实数表达式,如下例所示:

>>> from bs4 import BeautifulSoup as BS
soup = BS('<a>lalala <del>10</del> lalala </a>')
soup1 = BS('<a>lalala 10 lalala </a>'
>>> soup.find_all('a', text=re.compile('lalala'))
[]
>>> soup1.find_all('a', text=re.compile('lalala'))
[<a>lalala 10 lalala </a>]

为什么嵌入的&lt;del&gt;&lt;/del&gt; 标记使我无法找到文本中包含它的&lt;a&gt; 标记?我该如何解决?

【问题讨论】:

  • 提示:您在示例中忘记了import re :)

标签: python regex beautifulsoup


【解决方案1】:

这与您的正则表达式无关,但 .string (在 Beautiful Soup 4.4.0 中 text 参数被称为 string )参数的工作方式是它返回 None 如果标签包含更多不止一件事。 你可以使用a function 这样做:

def in_text(tag):
    return tag.name == 'a' and 'lalala' in tag.text

soup.find_all(in_text)

产量:

[<a>lalala <del>10</del> lalala </a>]

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 2017-05-04
    • 2014-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2012-11-04
    • 2013-01-11
    相关资源
    最近更新 更多