示例 HTML
<a class="accordion-item__link" href="/identity-checking/individual"><!-- react-text: 178 -->Australia<!-- /react-text --></a>
当我运行时
soup.find("a", text="Australia")
它什么都不返回。
如果我跑soup.find("a", href="/identity-checking/individual")
它找到了标签。
soup.find("a", href="/identity-checking/individual").text
也返回 'Australia'
跟评论有关系吗?
我正在尝试找到一种遵循 find
方法的方法,因为它最方便且适应性最强。这里的问题是 HTML 注释弄乱了引擎。手动删除评论会很有帮助。
from bs4 import BeautifulSoup, Comment
bs = BeautifulSoup(
"""
<a class="accordion-item__link" href="/identity-checking/individual"><!-- react-text: 178 -->Australia<!-- /react-text --></a>
""",
"lxml"
)
# find all HTML comments and remove
comments = bs.findAll(text=lambda text:isinstance(text, Comment))
[comment.extract() for comment in comments]
r = bs.find('a', text='Australia')
print(r)
# <a class="accordion-item__link" href="/identity-checking/individual">Australia</a>
删除评论的方法出自这里How can I strip comment tags from HTML using BeautifulSoup?
如果要保留评论,您可以制作一份 soup。
我是一名优秀的程序员,十分优秀!