1

朋友使用的应用程序取决于特定站点链接到汇率来源的每日汇率数据

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

到目前为止,我已经能够将网站的内容剥离到一个列表中:

[
<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
4

1 回答 1

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], ...}
于 2012-12-12T15:50:10.200 回答