2014-11-21 3 views
3

Я хотел бы ввести текст в текстовое поле формы. Это мой текущий код. Что я должен делать дальше?Python - Механизировать текст ввода в форме

import re 
from mechanize import Browser 

br = Browser() 
br.open("xyz.com") 
formcount=0 
for frm in br.forms(): 
if str(frm.attrs["id"])=="xyz": 
break 
formcount=formcount+1 
br.select_form(nr=formcount) 

## What should I code here to input text into the form? 

response = br.submit() 

ответ

2
br.form['id'] = 'ss-form' # This does the input 
br.submit() # This will submit the form 
print br.response().read() # This will read the new page returned 

попробовать print br.response().read(). Это то, что вы хотите, вы можете разобрать ответ с помощью Beautiful Soup. soup = BeautifulSoup(br.response().read())

+0

Br.form ['id'] = 'ss-form' не работает для ввода. Это то, что я получаю - Файл «/usr/lib/python2.7/dist-packages/mechanize/_form.py», строка 3101, в find_control return self._find_control (имя, тип, вид, идентификатор, метка , predicate, nr) Файл «/usr/lib/python2.7/dist-packages/mechanize/_form.py», строка 3185, в _find_control raise ControlNotFoundError («no control matching» + description) mechanize._form. ControlNotFoundError: нет контрольного совпадающего имени 'ss-form' –

+0

Я могу отправить пустую форму, но не могу отправить какой-либо текст. Может быть, теперь вы получаете то, что я хочу сделать? –

+0

Это означает, что форма не имеет этого элемента управления. Сначала вам нужно выбрать правильную форму 'br.select_form ('name_of_the_form')'. – ssm

0

Если форма неназванный вы можете использовать:

br.select_form(nr=0) 

Это будет выбрать первую форму («0-й один»).

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