python汇率汇率数据

时间:2012-12-12 15:09:29

标签: python python-2.7

朋友使用的应用程序取决于特定网站link to source of rates

的每日汇率数据

问题是,当费率发生变化时,没有固定时间影响业务,因为有时当费率发生变化时,她可能会出局,所以在他回来之前,任何发生的交易都将使用最后输入的费率。有时她会因为失败而赢得胜利。我正在尝试创建一个自动客户端,它将独立地为她汇率和更新汇率。

到目前为止,我已经能够将网站的内容删除到列表中:

[
<td style="text-align: left;">U.S Dollar</td>,
<td>USDGHS</td>, <td>1.8673</td>, <td>1.8994</td>,
<td style="text-align: left;">Pound Sterling</td>,
<td>GBPGHS</td>, <td>3.0081</td>, <td>3.0599</td>,
<td style="text-align: left;">Swiss Franc</td>,
<td>CHFGHS</td>, <td>2.0034</td>, <td>2.0375</td>,
<td style="text-align: left;">Australian Dollar</td>,
<td>AUDGHS</td>, <td>1.9667</td>, <td>2.0009</td>,
<td style="text-align: left;">Canadian Dollar</td>,
<td>CADGHS</td>, <td>1.8936</td>, <td>1.9259</td>,
<td style="text-align: left;">Danish Kroner</td>,
<td>DKKGHS</td>, <td>0.3255</td>, <td>0.3311</td>,
<td style="text-align: left;">Japanese Yen</td>,
<td>JPYGHS</td>, <td>0.0226</td>, <td>0.0230</td>,
<td style="text-align: left;">New Zealand Dollar</td>,
<td>NZDGHS</td>, <td>1.5690</td>, <td>1.5964</td>,
<td style="text-align: left;">Norwegian Kroner</td>,
<td>NOKGHS</td>, <td>0.3307</td>, <td>0.3363</td>]

我现在正在努力创建像这样的词典

{USDGHS: [1.8673, 1.8994], GBPGHS: [3.0081, 3.0599], ...}

然后我将使用字典更新数据库中的相应表。

我使用beautifulsoup4和urllib2

进入了这个阶段

[编辑]

使我达到这一点的代码

from bs4 import BeautifulSoup
import urllib2

url = "http://bog.gov.gh/data/bankindrate.php"
page = urllib2.urlopen(url)

soup = BeautifulSoup(page.read())

td = soup.find_all('td')

another_soup = BeautifulSoup(td[:-3])

print another_soup

1 个答案:

答案 0 :(得分:3)

您需要首先找到行(tr标记)并使用这些行然后获取列(td标记):

currencies = {}
trs = soup.find_all('tr') # find rows
for tr in trs[1:-3]: # skip first and last 3 (or whatever)
    text = list(tr.strings) # content of all text stuff in tr (works in this case)
    # [u'U.S Dollar', u'USDGHS', u'1.8673', u'1.8994']
    currencies[text[1]] = [float(text[2]), float(text[3])]

然后使用适当的密钥将它们放入字典中,并将两个数字的值转换为浮点数...

>>> currencies
{u'USDGHS': [1.8673, 1.8994], u'JPYGHS': [0.0226, 0.023], u'CHFGHS': [2.0034, 2.0375], u'CADGHS': [1.8936, 1.9259], ...}