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)
, приводит к тому же результату трассировки. Тип формы - multipart / form-data, если это имеет значение.
Я полагаю, что все сводится к вопросу, состоящему из двух частей: как мне настроить механизм для работы с этой страницей или, если это невозможно, как еще можно сохранить файлы cookie?
edit: как упомянуто ниже, это перенаправляет на '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