2013-03-17 6 views
1

У меня есть этот источник:Python 27 - BeautifulSoup и таблицы

<tr id="bitstampUSD"> 
<td class="arrow" change="up" latest_trade="1363480722"> 
    <span class="down">▼</span> 
</td> 

<td class="symbol"> 
    <nobr> 
    <a href="/markets/bitstampUSD.html">bitstampUSD</a> 
    </nobr> 
    <span class="sub">USD (SEPA converted)</span> 
</td> 
<td>46.74 
    <span class="sub">41 min ago</span> 
</td> 
<td class="minichart break"> 
    <span volume="**whole heaps of number here that I want**" 
    print="**more numbers I want**" 
    avg="**more numbers I want**" 
    class="marketsparkline"></span> 
</td> 
<td>**36.39** 

    <span class="sub change">**10.35 28.46%**</span> 

</td> 
<td>**141,043.10** 
    <span class="sub">**5,132,052.22 USD**</span> 
</td> 
<td>**25.25** 
    <span class="sub">**46.58** (24h)</span> 
</td> 
<td>**49.17** 
    <span class="sub">47 (24h)</span> 
</td> 
<td class="break">**46.7**</td> 
<td>**46.74**</td> 
<td class="break">**46.78** 

    <span class="sub change">-0.04 -0.09%</span> 

</td> 
<td>**819.54** 
    <span class="sub">**38,340.96** USD</span> 
</td> 
     </tr> 

Так что я хочу, чтобы получить данные выделены жирным шрифтом. (Ну, это должно быть выделено жирным шрифтом, я думаю, что теги кода останавливают это из-за происходящего.Данные внутри двух звездочек.

Мне удалось выяснить, как получить биты в коде, который я здесь не включил, так как он был внутри классов. Но вот, некоторые из них за пределами классов, так что я не знаю, как схватить его.

может помочь взглянуть на весь источник, если вы хотите http://bitcoincharts.com/markets/ она выкладывается иначе, чем другой табличный код, который я видел раньше.

+0

'soup.findAll ('б')'? – TerryA

+1

Вместо того, чтобы возиться с разбором HTML, было бы проще использовать их [API рынков] (http://bitcoincharts.com/about/markets-api/)? Я просто попробовал это сам, и он вернул хороший список словарей с кодировкой JSON со значениями, такими как '[{u'volume ': 822.42673038, u'latest_trade': 1363486862, u'bid ': 46.81, u'high': 47.0 , u'currency ': u'USD', u'currency_volume ': 38473.8713986671, u'ask': 46.83, u'close ': 46.81, u'avg': 46.78091066044309, u'symbol ': u'bitstampUSD', u 'low': 46.58}] '. – DSM

+0

Ой, черт возьми! haha WEll, я бы хотел все это понять, но если это не удастся, я посмотрю на это, ура. – tommo

ответ

0

Ну, это выводит немного больше, чем вы просили, но вам нужно начать:

soup = BeautifulSoup(f) 
for td in soup.find_all('td', class_='minichart break'): 
    avg = td.span['avg'] 
    print_ = td.span['print'] 
    volume = td.span['volume'] 
    print avg, print_, volume 

for td in soup.find_all('td'): 
    print 'TD', td.text.split() 

На вашем примере я получаю:

**more numbers I want** **more numbers I want** **whole heaps of number here that I want**                                               
[u'\u25bc']                                                                   
[u'bitstampUSD', u'USD', u'(SEPA', u'converted)']                                                         
[u'46.74', u'41', u'min', u'ago']                                                             
[]                                                                     
[u'**36.39**', u'**10.35', u'28.46%**']                                                            
[u'**141,043.10**', u'**5,132,052.22', u'USD**']                                                         
[u'**25.25**', u'**46.58**', u'(24h)']                                                            
[u'**49.17**', u'47', u'(24h)']                                                              
[u'**46.7**']                                                                  
[u'**46.74**']                                                                  
[u'**46.78**', u'-0.04', u'-0.09%']                                                             
[u'**819.54**', u'**38,340.96**', u'USD'] 
Смежные вопросы