2013-03-06 17 views
7

私はhtmlページを解析し、通貨の値を取得してcsvに書き込もうとします。 私は、コードを次ていますpythonとbeautifulsoupでhtmlテーブルを解析してcsvに書き込む方法

#!/usr/bin/env python 

import urllib2 
from BeautifulSoup import BeautifulSoup 

contenturl = "http://www.bank.gov.ua/control/en/curmetal/detail/currency?period=daily" 
soup = BeautifulSoup(urllib2.urlopen(contenturl).read()) 

table = soup.find('div', attrs={'class': 'content'}) 

rows = table.findAll('tr') 
for tr in rows: 
    cols = tr.findAll('td') 
    for td in cols: 
     text = td.find(text=True) + ';' 
     print text, 
    print 

問題は通貨の値のみを取得する方法を、私は知らないこと、です。 '^ [0-9] {3}'のような正規表現を試しましたが、3桁で始まりますが動作しません。

+0

4の代わりにBeautifulSoup 3を使用している理由は何ですか?あなたの問題ではそれほど重要ではありませんが、bs4は場所ではるかに優れた機能を提供します。 –

+0

「公式為替レート」の値だけを取得しようとしていますか? – jurgenreza

答えて

9

テーブル内の特定のセルを選択するほうがずっと良いでしょう。店舗、別の変数内のデータと

rows = table.findAll('tr') 
for tr in rows: 
    cols = tr.findAll('td') 
    if 'cell_c' in cols[0]['class']: 
     # currency row 
     digital_code, letter_code, units, name, rate = [c.text for c in cols] 
     print digital_code, letter_code, units, name, rate 

、あなたは今、小数にテキストを変えることができます:cell_cクラスとtd細胞は、興味のあるデータが含まれており、最後の1は、常に為替レートでありますそれらはデータベースに格納されます。

関連する問題