我已经尝试了一段时间才能获得#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>...
答案 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