使用 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。
现在我一直在尝试使用 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。