找到多属性类bs4的所有标签

时间:2018-03-16 03:22:22

标签: python python-3.x beautifulsoup

我知道发现所有出现的具有一个属性的类都是如下。

soup.find_all('a', class_='className')

但是这并不能获得如下所示的所有标签。

soup.find_all('a', class_='class Name') 

如何找到具有多属性类的美丽汤对象的所有标签,例如" class _ =' class Name'"?

1 个答案:

答案 0 :(得分:0)

考虑这样的HTML。

<div class="one two">
this
</div>
<div class="one">
that
</div>

如果您对class属性中“一二”的格式有信心,那么可以像下面的代码一样简单地完成。否则,您需要安排重新格式化。

>>> import bs4
>>> soup = bs4.BeautifulSoup(open('emh.htm').read(), 'lxml')
>>> def accept(item):
...     return item=='one two'
... 
>>> 
>>> soup.find_all('div', class_=accept)
[<div class="one two">
this
</div>]

每次find_all看到class属性时,它都会调用accept函数,该函数将该属性与字符串常量'one two'进行比较。如果函数返回True,则find_all将返回关联的元素,在本例中为div