Я только начал экспериментировать с отправкой webforms через механизацию. На странице this webpage есть список товаров на выбор, MASTER_MODS
. Они могут быть выбраны либо в MODS
с использованием butten add_MODS
, либо в IT_MODS
с помощью кнопки add_IT_MODS
(см. Рисунок внизу). В виде она выглядит следующим образом (код для формы в нижней части):Механизировать, как добавить в список выбора?
<<SNIP>>
<SelectControl(MODS=[*--- none selected ---])>
<IgnoreControl(add_MODS=<None>)>
<SelectControl(MASTER_MODS=[])>
<SelectControl(IT_MODS=[*--- none selected ---])>
<IgnoreControl(remove_IT_MODS=<None>)>
<IgnoreControl(add_IT_MODS=<None>)>
<<SNIP>>
Так что я хочу, чтобы добавить к <SelectControl(MODS=[*--- none selected ---])>
и <SelectControl(IT_MODS=[*--- none selected ---])>
. Однако, когда я пытаюсь добавить элемент непосредственно с
br.form[ 'MODS'] = ['Acetyl (N-term)']
Я получаю mechanize._form.ItemNotFoundError: insufficient items with name 'Acetyl (N-term)'
И когда я пытаюсь
br.form[ 'add_MODS'] = 'Acetyl (N-term)'
я ValueError: control 'add_MODS' is ignored, hence read-only
.
Как добавить товар в MODS
и IT_MODS
?
Рисунок и код
Код:
from mechanize import Browser, _http
br = Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
url = "http://www.matrixscience.com/cgi/search_form.pl?FORMVER=2&SEARCH=MIS"
br.select_form('mainSearch')
br.open(url)
print br.form
Я получаю «фатальную ошибку» на вашем примере ссылки. – KobeJohn
@kobejohn У меня был задний], исправленный сейчас. –
У меня нет опыта работы в механизации, но у меня есть куча вопросов. Присоединяйтесь ко мне в [чате] (http://chat.stackoverflow.com/rooms/42047/mechanize-how-to-add-to-a-select-list)? – KobeJohn