示例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
也会返回“澳大利亚”
是否与评论有关?
答案 0 :(得分:1)
我试图找到一种坚持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?
如果要保留评论,您可以使用汤的副本。
答案 1 :(得分:0)
尝试在找到标记后提取文本,即:
result = ""
for tag in soup.find_all('a'):
if tag.text == "Australia":
result = tag
答案 2 :(得分:0)
出于某种原因,当存在<h3> <?php echo $article['title']; ?> </h3>
<p class="content article-content"> <?php echo nl2br($article['content']); ?> </p>
评论时,检测到标记文本会被翻转。
您可以将其用作解决方法:
xml