Использование Mechanize для входа в Bing на Python 2.7.5

Я пытаюсь использовать Python 2.7.5 и библиотеку mechanize для создания программы, которая регистрирует меня в моем Учетная запись Майкрософт на bing.com. Для начала я создал эту программу, чтобы распечатать имена форм на этой веб-странице, чтобы я мог ссылаться на них в более позднем коде. Мой текущий код таков (извините за длинный URL):

import mechanize
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent','Firefox')]

br.open("https://login.live.com/ppsecure/post.srf?wa=wsignin1.0&rpsnv=11&ct=1375231095&rver=6.0.5286.0&wp=MBI&wreply=http:<%2F%2Fwww.bing.com%2FPassport.aspx%3Frequrl%3Dhttp%253a%252f%252fwww.bing.com%252f&lc=1033&id=264960&bk=1375231423")
print(br.title)

forms_printed = 0
for form in br.forms():
    print form
    forms_printed += 1
if forms_printed == 0:
    print "No forms to print!"

Несмотря на то, что когда я захожу на веб-страницу в Firefox, я вижу форму с именем пользователя и паролем, когда я запускаю этот код, результат всегда «Нет форм для печати!» Я неправильно использую здесь механизм, или веб-сайт намеренно мешает мне найти эти формы? Любые советы и/или рекомендации приветствуются.


person Ignigknot    schedule 03.08.2013    source источник


Ответы (1)


Если вы попытаетесь прочитать полученный HTML-код, вы увидите, что для веб-страницы требуется javascript.

Пример:

import mechanize
br = mechanize.Browser()
br.set_handle_robots(False)
br.addheaders = [('User-agent','Firefox')]

page = br.open("https://login.live.com/ppsecure/post.srf?wa=wsignin1.0&rpsnv=11&ct=1375231095&rver=6.0.5286.0&wp=MBI&wreply=http:<%2F%2Fwww.bing.com%2FPassport.aspx%3Frequrl%3Dhttp%253a%252f%252fwww.bing.com%252f&lc=1033&id=264960&bk=1375231423")
print page.read()
print(br.title)

forms_printed = 0
for form in br.forms():
    print form
    forms_printed += 1
if forms_printed == 0:
    print "No forms to print!"

Выход:

Microsoft account

JavaScript required to sign in
Microsoft account requires JavaScript to sign in. This web browser either does not support JavaScript, or scripts are being blocked.

To find out whether your browser supports JavaScript, or to allow scripts, see the browser's online help.

См. связанные вопросы об этом

person 4d4c    schedule 04.08.2013