Вход в Yahoo Finance с помощью MechanicalSoup - PullRequest
0 голосов
/ 29 января 2019

Сейчас я пытаюсь получить доступ к Yahoo с помощью Python, и я не уверен, почему я не могу войти в систему.

Мой предполагаемый поток

Перейти к Yahoo ->войдите в систему -> введите имя пользователя -> нажмите кнопку отправки -> введите пароль -> нажмите кнопку отправки.

Пожалуйста, дайте мне знать, где я допустил ошибку и почему код не работает.Любые альтернативы для входа в Yahoo, не основанные на селене, приветствуются и все еще используют python.

"""Example app to login to Yahoo using the StatefulBrowser class."""

from __future__ import print_function
import argparse
import mechanicalsoup

browser = mechanicalsoup.StatefulBrowser(
    soup_config={'features': 'lxml'},
    raise_on_404=True,
    user_agent='MyBot/0.1: mysite.example.com/bot_info',
)
# Uncomment for a more verbose output:
browser.set_verbose(2)
browser.session.cookies.keys()
browser.open("https://login.yahoo.com/config/login?.src=fpctx&.intl=ca&.lang=en-CA&.done=https%3A%2F%2Fca.yahoo.com")

form1 = browser.select_form(nr=0)
browser['username'] = 'beta@gmail.com'
response = browser.submit_selected()
print(response.content)
browser.select_form(nr=0)
browser['passwd'] = 'badPass'
response = browser.submit_selected()
print(response)
page = browser.get_current_page()

1 Ответ

0 голосов
/ 29 января 2019

Беглый взгляд на источник страницы входа показывает, что он довольно широко использует JavaScript.Кажется весьма вероятным, что отправка формы обрабатывается JavaScript, хотя я не могу указать на точную строку кода, которая неопровержимо доказывает это.

Поскольку MechanicalSoup не поддерживает JavaScript, вам может потребоваться найти альтернативуинструмент, который делает, например, Selenium.См. этот FAQ для получения дополнительной информации.

...