gpt4 book ai didi

Python requests lib, requests.Session 相当于urllib2的opener吗?

转载 作者:行者123 更新时间:2023-11-28 21:56:57 27 4
gpt4 key购买 nike

我需要在自己的项目中完成登录任务。幸运的是我发现有人已经完成了。
这是相关代码。

import re,urllib,urllib2,cookielib

class Login():
cj = cookielib.LWPCookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

def __init__(self,name='',password='',domain=''):
self.name=name
self.password=password
self.domain=domain
urllib2.install_opener(self.opener)

def login(self):
params = {'domain':self.domain,'email':self.name,'password':self.password}
req = urllib2.Request(
website_url,
urllib.urlencode(params)
)

self.openrate = self.opener.open(req)

print self.openrate.geturl()
info = self.openrate.read()

我已经测试了代码,它运行良好(根据 info)。
现在我想将它移植到 Python 3 以及使用 requests lib 而不是 urllib2。
我的想法:

  1. 由于原始代码使用opener,虽然不确定,但我认为它在requests 中的等价物是requests.Session
  2. 我是否应该在发出请求时传入一个 jar = cookiejar.CookieJar() ?也不确定。

我试过类似的东西

import requests
from http import cookiejar
from urllib.parse import urlencode

jar = cookiejar.CookieJar()
s = requests.Session()
s.post(
website_url,
data = urlencode(params),
allow_redirects = True,
cookies = jar
)

另外,按照 Putting a `Cookie` in a `CookieJar` 中的答案进行操作, 我尝试再次发出相同的请求,但这些都不起作用。

这就是我来这里寻求帮助的原因。 有人会告诉我做这项工作的正确方法吗?谢谢~

最佳答案

  1. 开场白和 Session 并不完全相似,但对于您的特定用例,它们完美匹配。
  2. 使用 Session 时不需要传递 CookieJar:请求会自动创建一个,将其附加到 Session,然后将 cookie 持久化到 Session 给你。
  3. 您不需要对数据进行 urlencode:requests 会为您完成。
  4. allow_redirects 默认为 True,您无需传递该参数。

将所有这些放在一起,您的代码应如下所示:

import requests

s = requests.Session()
s.post(website_url, data = params)

使用您刚创建的Session 发出的任何 future 请求都将在适当时自动应用 cookie。

关于Python requests lib, requests.Session 相当于urllib2的opener吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20701331/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com