如何用python和beautifulsoup解析html表并写入csv

时间:2013-03-06 14:50:09

标签: 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位开头,但它不起作用。

1 个答案:

答案 0 :(得分:9)

你最好选择表格中的特定细胞。 td类的cell_c单元格包含您感兴趣的数据,最后一个单元格始终是货币汇率:

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

将数据放在单独的变量中,您现在可以将文本转换为十进制数,将它们存储在数据库中,无论如何。