2012-03-17 3 views
1

Я пытаюсь использовать Python механизировать модуль для извлечения данных с помощью этой формы: http://archive.stsci.edu/kepler/data_search/search.php?form=fufИспользование Python механизировать на конкретной форме с JavaScript

Дело У меня возникли проблемы с это «Output» Столбцы области в нижнем слева, который использует 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

Спасибо за ответ. Я думал о том, чтобы делать это через ПОСТ, но не знал об этом, поэтому не хотел пытаться; ваш код отлично работает. А как насчет загрузки файлов? Как мне это сделать через urlencode? – StrangeQuirk

+0

Кроме того, я выяснил, что с помощью механизации я могу просто отредактировать содержимое скрытого выбранного элементаColumnsCsv, чтобы выбрать выходные столбцы; Я предположил, что он будет очищен функцией javascript preprocess(). В этом случае, есть ли преимущество использования POST над механизацией? – StrangeQuirk

Смежные вопросы