我是Python的新手。
some_soup = BeautifulSoup('<div class="some_class"></div><div id="some_id"></div>')
我可以这样做吗:
some_soup.findAll('div', {'class': 'some_class', 'id': 'some_id'})
代替
some_soup.findAll('div', {'class': 'some_class'})
some_soup.findAll('div', {'id': 'some_id'})
? 这个想法是我需要找到特定名称为&#34; class&#34;的某些DIV。和&#34; id&#34;在一个表达式。 BeautifulSoup是否支持此类实现?
答案 0 :(得分:1)
由于ID应该是唯一的,因此不需要some_soup.findAll(&#39; div&#39;,{&#39; class&#39;:&#39; some_class&#39;})你可以做some_soup.find(id =&#39; some_id&#39;)
修改:首先,我认为您只想使用div
来获取id
。如果您希望获得具有特定类别或特定ID的所有块,您可以使用过滤器来实现您的目标:
def class_or_id_filter(tag):
print tag, (tag['id'] if tag.has_attr('id') else 'none')
return (tag.has_attr('class') and 'some_class' in tag['class']) or (tag.has_attr('id') and tag['id'] == 'some_id')
some_soup.findAll(class_or_id_filter)