Ran*_*ama 4 python httprequest cookiejar python-requests
如何将 CookieJar 加载到新的 requests.Session 对象?
cj = cookielib.MozillaCookieJar("mycookies.txt")
s = requests.Session()
Run Code Online (Sandbox Code Playgroud)
这就是我创建的,现在会话将存储cookie,但我希望它从文件中获取cookie
(会话应该加载cookieJar)。如何才能实现这一目标?
我搜索了文档,但只能找到代码示例,而且它们从不加载 cookieJar,只是在一个会话期间保存 cookie。
Python 3.x 代码,完全工作且实现良好的示例。该代码是不言自明的。
此代码正确处理“会话cookie”,并在运行之间保留它们。默认情况下,这些不会保存到磁盘,这意味着大多数网站会要求您在运行之间不断登录。但通过下面的技术,所有会话 cookie 也会被保留!
这是您正在寻找的代码。
import os
import pathlib
import requests
from http.cookiejar import MozillaCookieJar
cookiesFile = str(pathlib.Path(__file__).parent.absolute() / "cookies.txt") # Places "cookies.txt" next to the script file.
cj = MozillaCookieJar(cookiesFile)
if os.path.exists(cookiesFile): # Only attempt to load if the cookie file exists.
cj.load(ignore_discard=True, ignore_expires=True) # Loads session cookies too (expirydate=0).
s = requests.Session()
s.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36",
"Accept-Language": "en-US,en"
}
s.cookies = cj # Tell Requests session to use the cookiejar.
# DO STUFF HERE WHICH REQUIRES THE PERSISTENT COOKIES...
s.get("https://www.somewebsite.com/")
cj.save(ignore_discard=True, ignore_expires=True) # Saves session cookies too (expirydate=0).
Run Code Online (Sandbox Code Playgroud)
小智 5
在 Python 3.x 中
import requests
import http.cookiejar
s = requests.Session()
s.cookies = http.cookiejar.MozillaCookieJar("anything.txt")
Run Code Online (Sandbox Code Playgroud)
例如,我将访问 google 网站并将 cookiejar 保存到文件“anything.txt”
s.get("https://google.com")
s.cookies.save()
Run Code Online (Sandbox Code Playgroud)
将来,我会用 cookiejar 再次访问 google。
s.cookies.load()
s.get("https://google.com")
Run Code Online (Sandbox Code Playgroud)