擅长:python、mysql、java
<p>您可以构建一个自定义查询函数以传入<code>find()</code>:</p>
<pre><code>def has_my_text(tag):
found = tag.select_one('.Bgbcca')
# important to assign the result to avoid calling
# .get_text() on a NoneType, resulting in an error.
if found:
return found.get_text() == "MyText"
soup = bs4.... # assign your soup object
found = soup.find(has_my_text)
# <div class="Bgbcca">MyText</div>
# <span class="hthtb">
# <div>
# <span class="hthtb">Text3</span>
# </div>
# </span>
# </div>
# Note your span class is nested so we go two level in
result = found.select_one('.hthtb').select_one('.hthtb').get_text()
# 'Text3'
# This below also works if your other span are always empty texts
result = found.select_one('.hthtb').get_text().strip()
</code></pre>
<p>注意,<code>find()</code>和{<cd3>}假设我们只需要找到第一个匹配项。如果需要处理多个匹配项,则需要使用<code>find_all()</code>和{<cd5>}并相应地对代码进行更改。在</p>
<p>如果你想处理变量文本,你可以这样定义你的函数:</p>
^{pr2}$
<p>并将函数包装在<code>find()</code>中,如下所示:</p>
<pre><code>txt = "MyText"
soup.find(lambda tag: has_my_text(tag, txt))
</code></pre>