python - Python:使用机械汤保持登录网站
问题描述
我是 Python 的新手。我想在 python 中编写一个脚本,在其中运行数千个 URL 并保存响应。为了访问这些 URL,需要凭据。因此,我编写了一个基本脚本,该脚本转到 URL 并打印响应。当我通过多个 URL 时,网站返回多个用户登录的错误。所以,我想登录一次并在同一个登录会话中运行其他 URL。有什么办法可以用机械汤做到这一点。
这是我的脚本:
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)
推荐阅读
- twincat - 为什么将事件从 twincat 项目文件移动到未格式化的单独 tmc 文件?
- python - gnupg python解密和加密使用内存而不是磁盘空间
- javascript - 我怎样才能取值在 *ngfor?
- arrays - 选择最多时间时如何重新排列集合视图单元格
- asp.net - 如何从任何类型的数据库(pdf、xlx、jp 或 png)中检索文件并使其可在网页上下载?
- php - CORS 策略已阻止访问 XMLHttpRequest - Laravel 5.8
- haskell - 我得到错误:非常简单的 Haskell 代码的变量不在范围内
- javascript - 必填字段检查无法正常工作
- c - 是否可以在 C99 (gcc/clang) 中使用 __asm 作为 lambda 表达式
- javascript - Javascript - 乘以 100 后特定数字的奇怪小数