使用beautifulsoup在<br/>标签之间提取数据

时间:2012-04-18 07:34:58

标签: python beautifulsoup

我有这个html数据,我需要解析它从中提取数据。但它有很多标签和数据也难以为我导航。从下面的Html数据我需要创建一个python字典列表,看起来像:

  

[{ “学校”:“童车   玩 “},{” 地方 “:” 纽约 “},{” 级别 “:” 四 “},{” 国家 “:” USA “},{” 级别   当然“:”Easy“}]

<div class="quick">
 <strong>School</strong><br /> Childs play <br /><br />
 <strong>Place</strong><br />
 <a href="Search.aspx?Menu=new&amp;Me=">newyork</a><br /><br />
 <strong>Level</strong><br />four<br /><br />
 <strong>Country</strong><br />USA<br /><br />
 <strong>Level Of Course</strong><br />Easy<br /><br />
</div>

我尝试使用beautifulsoup但没有成功。请帮助

1 个答案:

答案 0 :(得分:1)

不幸的是,HTML并不是理想的解析结构,但可以将数据提取到有意义的Python字典中。

from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(htmlString)

raw_data = soup.find(**{"class": "quick"}).contents
data = [x for x in raw_data if not hasattr(x, "name") or not x.name == "br"]

使用if not hasattr(x, "name") or not x.name == "br"首先检查以确保该项是NavigableString的实例,然后检查该元素是否为<BR>标记。

data将采用[<KEY>, <VALUE>, <KEY>, <VALUE>]格式,从中提取数据应该非常简单。