2012-11-13 42 views
1

我浏览了一小时前的问题,并尝试了各种解决方案,但无法使其工作。我已经从网站中提取了我想要的结果,现在我只需要挖掘这些div以获取我想要的具体信息。BeautifulSoup提取div内的数据

结果是孤立的,像这样:

items=soup.findAll(id=re.compile("itembase")) 

对于每一个项目,我想提取例如lat和长从这块的html:

<div id="itembase29" class="result-item -result unselected clearfix even" data- 
part="fl_base" data-lat="51.9006" data-lon="-8.51008" data-number="29" 
is-local="true" data-customer="32060963" data-addrid="1" 
data-id="4b00fae498e3cc370133e8a14fd75160"> 
<div class="arrow"> 
</div> 

我怎么做?谢谢。

回答

2
  1. 将您的html对象传入美丽的汤。

    soup = BeautifulSoup(html) 
    
  2. 找到div。

    div = soup.div 
    
  3. 从div中获取您要查找的属性。

    lat, lon = div.attrs['data-lat'], div.attrs['data-lon'] 
    
  4. 打印。

    >>> print lat, lon 
    51.9006 -8.51008 
    

我离开了.attrs方法在那里为清楚起见,但更一般地说,您可以访问的属性就像一本字典的任何元素,你甚至不真正需要的.attrs方法,如下所示:div['data-lon']。这显然不适用于div的列表,您需要遍历列表。

for div in divs: 
    print div['data-lon'], div['data-lat'] 

或列表理解。

[(div['data-lon'], div['data-lat']) for div in divs] 
+0

谢谢。现在可以使用:对于项目中的项目: soup = BeautifulSoup(str(item)) div = soup.div print div ['data-lon'],div ['data-lat'] – user578582