BeautifulSoup:搜索多个标签

时间:2018-10-23 11:46:17

标签: python beautifulsoup

我目前正在我的应用程序中实现Beautiful Soup,以搜索用户的HTML内容。它的工作原理是,如果用户未输入指定的HTML标记之一,它将返回一个假值。当只有一个HTML标签时,这种方法很好用,但是我也希望它可以用于多个HTML标签。 这是我的代码。

soup = BeautifulSoup(userInput, 'html.parser')
if soup.find(['h1','h2']) is None:
   return false
else:
   return true

所以我希望它如何工作,如果数组[h1,h2]中的所有元素都不在用户输入中,那么它将返回false。上面的代码的工作方式是,如果用户在数组中输入值之一,它将返回true。

有什么方法可以在Python中实现吗?

1 个答案:

答案 0 :(得分:0)

.find不能这样工作。您必须为每个标签调用一次:

if not any(soup.find(tag) for tag in ('h1', 'h2')):
    # if inputted HTML does not contain h1 or h2 tags

您当然可以使用所需的任何逻辑。如果要强制h1h2标签同时存在,请使用

if not all(soup.find(tag) for tag in ('h1', 'h2'))