BeautifulSoup通过一个请求找到id和class的div

时间:2015-03-16 08:25:23

标签: python beautifulsoup

我是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是否支持此类实现?

1 个答案:

答案 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)