Python:使用 mechanicalsoup 保持登录网站
Python: Remain logged in a website using mechanicalsoup
我是Python的新手。我想在 python 中编写一个脚本,其中我 运行 数千个 URL 并保存响应。为了访问这些 URL,需要凭据。所以,我写了一个基本脚本,它转到 URL 并打印响应。当我经历多个 URL 时,网站 returns 出现多个用户登录的错误。因此,我想登录一次 运行 其他 URLs相同的登录会话。有什么办法可以使用 Mechanical soup 来做到这一点。
这是我的脚本:
import mechanicalsoup
browser = mechanicalsoup.StatefulBrowser()
browser.open("mywebsite1")
browser.select_form('form[action="/login"]')
browser.get_current_form().print_summary()
browser["userId"] = "myusername"
browser["password"] = "mypassword"
response = browser.submit_selected()
browser.launch_browser()
print(response.text)
browser.open("mywebsite2")
print(response.text)
...... so on for all the URLs
如何保存会话?预先感谢您的帮助
只需保存并加载 session.cookies
:
def save_cookies(browser):
return browser.session.cookies.get_dict()
def load_cookies(browser, cookies):
from requests.utils import cookiejar_from_dict
browser.session.cookies = cookiejar_from_dict(cookies)
browser = mechanicalsoup.StatefulBrowser()
browser.open("www.google.com")
cookies = save_cookies(browser)
load_cookies(browser, cookies)
我是Python的新手。我想在 python 中编写一个脚本,其中我 运行 数千个 URL 并保存响应。为了访问这些 URL,需要凭据。所以,我写了一个基本脚本,它转到 URL 并打印响应。当我经历多个 URL 时,网站 returns 出现多个用户登录的错误。因此,我想登录一次 运行 其他 URLs相同的登录会话。有什么办法可以使用 Mechanical soup 来做到这一点。
这是我的脚本:
import mechanicalsoup
browser = mechanicalsoup.StatefulBrowser()
browser.open("mywebsite1")
browser.select_form('form[action="/login"]')
browser.get_current_form().print_summary()
browser["userId"] = "myusername"
browser["password"] = "mypassword"
response = browser.submit_selected()
browser.launch_browser()
print(response.text)
browser.open("mywebsite2")
print(response.text)
...... so on for all the URLs
如何保存会话?预先感谢您的帮助
只需保存并加载 session.cookies
:
def save_cookies(browser):
return browser.session.cookies.get_dict()
def load_cookies(browser, cookies):
from requests.utils import cookiejar_from_dict
browser.session.cookies = cookiejar_from_dict(cookies)
browser = mechanicalsoup.StatefulBrowser()
browser.open("www.google.com")
cookies = save_cookies(browser)
load_cookies(browser, cookies)