2011-01-28 131 views
2

我試圖從bloomberg網站下載機械化/ python的貨幣數據。 http://www.bloomberg.com/markets/currencies/使用機械化訪問Javascript按鈕

我已經成功地更新字段所需貨幣,不幸的是,我有麻煩「提交」轉換按鈕。

我不認爲br.submit()正在工作,當我嘗試使用br.click時,它說該項目不可點擊。 這裏的

<input type="button" value="Convert" class="btn w75" name="button" onclick="calculate(); return false;"> 

有人曾使用br.form.action 「」(http://bytes.com/topic/python/answers/764326-using-mechanize-python-navigate-建議按鈕的HTML網站),但我不知道我將如何實施它。

因此,這裏是到目前爲止的核心代碼...

br = mechanize.Browser() #initialized with and lets cookiejar handle all the cookies stuff 
br.open('http://www.bloomberg.com/markets/currencies/') 
br.form['from_tkc']=['USD:CUR'] 
br.form['to_tkc']=['BGN:CUR'] 
br.submit() . 
print br.response().read() 

遺憾的是,輸出HTML沒有我需要的數據是貨幣計算器和我知道一個事實,即按鈕更新。任何人都可以指向正確的方向,或者幫助我更多地理解按鈕。

回答

1

這是一個純粹的JavaScript表單。根本沒有提交任何內容,因此您無法使用機械化訪問/提交。

<form id="currcalc" onsubmit="calculate(); return false;" action="#"> 

http://www.bloomberg.com/javascripts/currencycalc_10.js是JavaScript計算器後面,您可以在包含表單頁面的HTML源代碼直接找到轉換數據:

<script type="text/javascript"> 
//<![CDATA[ 
     var test_obj = new Object(); 
     var price = new Object(); 
       price['ADP:CUR'] = 122.244; 
       price['AED:CUR'] = 3.67295; 
       price['AFN:CUR'] = 45.33; 
       price['ALL:CUR'] = 102.325; 
... 

所以,如果你想「偷」他們的轉換數據只是提取所有價格數組的行(是的,我知道它在技術上是一個對象!)會被填充。