2012-03-17 30 views
1

我試圖使用Python機械化模塊通過這樣的形式來檢索數據:http://archive.stsci.edu/kepler/data_search/search.php?form=fuf使用Python的具體形式機械化與JavaScript

我遇到的麻煩的事情是「輸出列」區域在較低左邊,它使用javascript來指定輸出格式。我希望能夠選擇特定的項目列表,通常會使用周圍的javascript按鈕進行選擇。

我是新來機械化,並沒有看過JavaScript的年齡。我一直在瀏覽負責任的JavaScript,但我不確定要做什麼。有小費嗎?

更具體地說:有沒有辦法使用機械化來修改列表中的元素?

回答

2

我建議直接對該表單進行POST調用,而不是通過mechanize以某種方式與表單進行交互。下面是我如何與mechanize做到這一點:

import mechanize 
from urllib import urlencode 
opener = mechanize.build_opener() 
data = {"resolver":"NED","radius":"0.02","equinox":"J2000","ktc_target_type[]":"LC","ktc_target_type[]":"SC","extra_column_name_1":"ktc_kepler_id","extra_column_value_1":"","extra_column_name_2":"ktc_kepler_id","extra_column_value_2":"","extra_column_name_3":"ktc_kepler_id","extra_column_value_3":"","extra_column_name_4":"ktc_kepler_id","extra_column_value_4":"","selectedColumnsCsv":"Mark,ktc_kepler_id,ktc_investigation_id,sci_data_set_name,ktc_target_type","selectedColumnsList[]":"ktc_target_type","availableColumns":"Mark","ordercolumn1":"ang_sep","ordercolumn2":"ktc_kepler_id","ordercolumn3":"","coordformat":"sex","outputformat":"HTML_Table","max_records":"1001","max_rpp":"100","action":"Search"} 
d = urlencode(data) 
url = 'http://archive.stsci.edu/kepler/data_search/search.php' 
stuff = opener.open(url,d) 
info_i_want = stuff.read() 

基本上,把你搜索的內容在一本字典,做一個POST調用服務器,並看到您的回覆。

+0

感謝您的回答。我一直在考慮通過POST這樣做,但沒有任何知識,所以不願意嘗試;儘管如此,你的代碼很好用。但是,文件上傳呢?我如何通過urlencode做到這一點? – StrangeQuirk 2012-03-18 03:11:29

+0

此外,我已經發現,與機械化我可以簡單地編輯隱藏selectedColumnsCsv元素的內容來選擇輸出列;我曾假設它會被javascript preprocess()函數擦乾淨。在這種情況下,使用POST over機械化有什麼好處? – StrangeQuirk 2012-03-18 03:48:31