使用Python Beautiful Soup进行Web抓取 - 提取单个值

时间:2017-07-18 05:36:34

标签: python web-scraping beautifulsoup

如何提取值'保持'和' 7'从下面的HTML代码?

<div class="row" data-key=hold>
  <div class="label">
     Hold
  </div>
  <div class="barContainer">
     <div class='bar ' style="width: 100.0%">
     </div>
     <div class="value" style="left: 100.0%">
        7
     </div>
  </div>
</div>

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用from bs4 import BeautifulSoup data = '''<div class="row" data-key=hold> <div class="label"> Hold </div> <div class="barContainer"> <div class='bar ' style="width: 100.0%"> </div> <div class="value" style="left: 100.0%"> 7 </div> </div> </div>''' soup = BeautifulSoup(data, 'html.parser') 基于标记和属性获取属性值,将字典作为参数传递,然后索引特定属性,以便:

>>> soup.find('div', {'class':"row"})['data-key']
'hold'

>>> soup.find('div', {'class':"value"}).text  # or .contents to get a list
'\n        7\n     '

然后:

function SetActive(id) {
    $('.Tabs').removeClass('Active');
    $(id).addClass('Active');
    $('.TabData').hide();
    $('#Data'+id).show();
}

答案 1 :(得分:0)

您可以执行以下操作:

from urllib.request import urlopen
from bs4 import BeautifulSoup

html = urlopen('http://whateverdomain.com')
bsObj = BeautifulSoup(html)
requiredContainer = bsObj.find("div", {'class':'row'})

holdValue = requiredContainer.find("div", {'class':'label'}).text
print(holdValue)

sevenValue = requiredContainer.find('div', {'class':'value'}).text
print(sevenValue)

whateverdomain.com替换为您要抓取的网页。

我使用下面的html页面进行测试。

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <div class="row" data-key=hold>
      <div class="label">
         Hold
      </div>
      <div class="barContainer">
         <div class='bar ' style="width: 100.0%">
         </div>
         <div class="value" style="left: 100.0%">
            7
         </div>
      </div>
    </div>
  </body>
</html>

要在本地运行,请保存html页面并使用html = urlopen('file:///path/to/index.html')

加载它