<p>您可以使用<code>find</code>方法的关键字参数来查找特定属性。在您的例子中,您需要匹配<code>class_</code>关键字。关于<code>class_</code>关键字,请参见<a href="http://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-by-css-class" rel="nofollow">documentation</a>。你知道吗</p>
<p>假设您希望筛选不包含“hinshi”类的任何子级的元素,可以尝试以下操作:</p>
<pre class="lang-py prettyprint-override"><code>soup = BeautifulSoup(data)
potential_matches = soup.find_all(class_="meaning")
matches = []
for match in potential_matches:
bad_children = match.find_all(class_="hinshi")
if not bad_children:
matches.append(match)
return matches
</code></pre>
<p>如果您愿意,您可以将其缩短一点,例如:</p>
<pre class="lang-py prettyprint-override"><code>matches = soup.find_all(class_="meaning")
return [x for x in matches if not x.find_all(class_="hinshi")]
</code></pre>
<p>或者,根据您的Python版本,即2.x:</p>
<pre class="lang-py prettyprint-override"><code>matches = soup.find_all(class_="meaning")
return filter(matches, lambda x: not x.find_all(class_="hinshi"))
</code></pre>
<p><strong>编辑:</strong>如果要在示例中查找数字旁边的外来字符,应首先删除<code>b</code>元素,然后使用<code>get_text</code>方法。例如</p>
<pre class="lang-py prettyprint-override"><code># Assuming `element` is one of the matches from above
element.find('b').extract()
print(element.get_text())
</code></pre>