2009-05-28 3 views
4
import mechanize 

url = 'http://steamcommunity.com' 

br=mechanize.Browser(factory=mechanize.RobustFactory()) 

br.open(url) 
print br.request 
print br.form 
for each in br.forms(): 
    print each 
    print 

Приведенные выше результаты кода в:Как сделать механизацию не с помощью форм на этой странице?

Traceback (most recent call last): 
    File "./mech_test.py", line 12, in <module> 
    for each in br.forms(): 
    File "build/bdist.linux-i686/egg/mechanize/_mechanize.py", line 426, in forms 
    File "build/bdist.linux-i686/egg/mechanize/_html.py", line 559, in forms 
    File "build/bdist.linux-i686/egg/mechanize/_html.py", line 228, in forms 
mechanize._html.ParseError 

Моя конкретная цель заключается в использовании форму входа в систему, но я не могу даже получить механизировать, чтобы признать, что есть какие-либо формы. Даже используя то, что я думаю, является самым основным методом выбора любой формы, br.select_form(nr=0), результаты аналогичны. Enctype формы - это multipart/form-data, если это имеет значение.

Я думаю, что все сводится к вопросу о двух частях: как я могу получить механизацию для работы с этой страницей, или если это невозможно, что еще нужно при сохранении файлов cookie?

Редактировать: Как указано ниже, это перенаправляется на 'https://steamcommunity.com'.

Mechanize может успешно извлечения HTML, как можно увидеть с помощью следующего кода:

url = 'https://steamcommunity.com' 

hh = mechanize.HTTPSHandler() # you might want HTTPSHandler, too 
hh.set_http_debuglevel(1) 
opener = mechanize.build_opener(hh) 
response = opener.open(url) 
contents = response.readlines() 

print contents 

ответ

2

Вы упоминаете, что веб-сайт перенаправляет на сервер (SSL) HTTPS?

Ну, попробуйте установить новый обработчик HTTPS так:

mechanize.HTTPSHandler() 
+0

Я забудьте добавить, что информация, спасибо. К сожалению, добавление строки, которую вы упоминаете, ничего не меняет. –

2

Используйте этот секрет, я уверен, что это работа для вас;)

br = mechanize.Browser(factory=mechanize.DefaultFactory(i_want_broken_xhtml_support=True)) 
+0

Не работает для меня, я все равно получаю 'mechanize._form.ParseError: вложенные FORM'. Я пробовал с «mechanize 0.2.5», а также с пакетом Debian 'python-mechanize 0.1.11' – koniu

+0

вам нужно сначала проверить этот элемент следующим образом: ** для a в br.forms(): напечатать ** это может помочь вам сначала проверить элемент формы –

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