使用 MechanicalSoup 登录 Yahoo Finance

Logging into Yahoo Finance Using MechanicalSoup

现在我一直在尝试使用 python 访问雅虎,但我不确定为什么我似乎无法登录。

我的预期流程是

转到雅虎 -> 登录 -> 输入用户名 -> 按提交按钮 -> 输入密码 -> 按提交按钮。

请让我知道我在哪里犯了错误,为什么代码似乎不起作用。任何非基于硒的登录雅虎的替代方法将不胜感激,并且仍然使用 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()

快速浏览一下登录页面源代码就会发现它使用了 JavaScript 相当广泛。表单提交似乎很可能是由 JavaScript 处理的,尽管我无法指出确切的代码行来无可争议地证明这一点。

由于 MechanicalSoup 不支持 JavaScript,您可能需要寻找支持的替代工具,例如 Selenium。有关详细信息,请参阅 this FAQ