BeautifulSoup在div中提取数据

时间:2012-11-13 17:53:07

标签: python html beautifulsoup

我已经浏览了之前的问题了一个小时并尝试了各种解决方案,但我无法让它发挥作用。我从网站上提取了我想要的结果,现在我只需要根据我想要的具体信息挖掘这些div。

结果是这样隔离的:

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

对于每个项目,我想从这段html中提取例如lat和long:

<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>

我该怎么做?感谢。

1 个答案:

答案 0 :(得分: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
    
  5. 为了清楚起见,我将.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]