2012-12-12 138 views
1

的一個朋友使用應用程序依賴於每天的匯率數據從一個特定的網站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>] 

我現在strugling有點創建像這樣

{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 
+2

它看起來像你只需要beautifulsoup4遠一點使用...你可以發佈代碼這是你到目前爲止?如果他們想要實驗,它會幫助某人 –

+1

@JonClements這裏有錢(沒有雙關語意思)。你應該從你從源代碼獲得的響應中構建一個DOM,然後遍歷它來提取你感興趣的數據。現在看起來,你正在進行文本解析,而這通常會讓你的生活更加艱難。的情況。 –

回答

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], ...} 
+0

非常感謝喬恩! – Napoleon