找到属于特定div的子项的所有'h2'标记,其属性为“id”,值为“column-left”

时间:2016-09-26 11:05:57

标签: python web-scraping beautifulsoup

使用BeautifulSoup,我尝试了以下方法:

q =  soup.div.find_all("div", { "id" : "column-left" }, "h2")

但这也给了我<p>的文字。我只想要h2是特定div的孩子。

2 个答案:

答案 0 :(得分:0)

您为什么要访问soup.div

试试这个:

q =  soup.find('div', { 'id' : 'column-left' }).find_all('h2')

此外,find_all还有可选参数&#39; id&#39;,因此您无需编写属性map

q =  soup.find('div', id='column-left').find_all('h2')

答案 1 :(得分:0)

如果你使用最新版本的BeautifulSoup(你应该),你可以使用一个CSS选择器,无论如何它可能更容易编写和维护。 e.g:

>>> from bs4 import beautifulsoup
>>> soup = BeautifulSoup('<div id=column-left><h2>Header</h2><p>Paragraph</p><h2>Another header</h2><p>Another paragraph</p></div>')
>>> soup.select('div#column-left > h2')
[<h2>Header</h2>, <h2>Another header</h2>]