2016-04-14 18 views
0

Şu an BS4 ile bu html parçasından "$ 6.4K" almak için bir süredir uğraşıyorum, ama konumu benim için biraz zor olduğundan bu yana zordu.Python - BeautifulSoup - Kapsanan veriyi kapat Divs & Span's

<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

Eğer "$ 6.4K" almaya çalıştınız nasıl gönderir misiniz? – Phillip

cevap

2

Birçok yol var. En iyi yol, bence en az kırılgan bir şey seçmek olurdu - HTML değiştiğinde kırılmayacak bir şey. Yani, HTML'nin ne kadar tutarlı olmasını beklediğinizi bilmiyorum.

Tek yön, <span>'un "meta" etiketine sahip 3. alt düğümünü seçmek olabilir. Bunu yapmak için, yapabileceği:

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

yazdırır Hangi:

$6.4K