Python - BeautifulSoup - 抓住数据封闭Divs&跨度' S

时间:2016-04-14 00:34:03

标签: python beautifulsoup

我已经尝试了一段时间才能获得#6.4; $ 6.4K"从这张带有BS4的HTML版本开始,但由于它的位置对我来说有点棘手,所以很难。

<div class="blk game">
<div class="blk away-team">
<div class="pitcher players">
<a href="http://rosl.tu" class="player-popup" data-url="http://rosl.tu">Jake Peavy</a>
<span class="meta stats">
<span class="stats"> R </span> 
$6.4K <span class="fpts" title="Projected Points" data-role="authorize" data-product="56">7.17</span>
</span>
</div>...

1 个答案:

答案 0 :(得分:2)

有很多方法。我认为,最好的方法是选择最不易碎的东西 - 如果HTML改变就不会破坏。也就是说,我不知道你对HTML的期望是多么一致。

因此,一种方法是选择具有“meta”标记的<span>的第3个子节点。要做到这一点,你可以这样做:

from bs4 import BeautifulSoup
html = '''
<div class="blk game">
<div class="blk away-team">
<div class="pitcher players">
<a href="http://rosl.tu" class="player-popup" data-url="http://rosl.tu">Jake Peavy</a>
<span class="meta stats">
<span class="stats"> R </span> 
$6.4K <span class="fpts" title="Projected Points" data-role="authorize" data-product="56">7.17</span>
</span>
</div>
'''

soup = BeautifulSoup(html)
print(list(soup.find_all("span", class_="meta")[0].children)[2])

打印哪些:

$6.4K