【发布时间】:2013-12-20 10:19:37
【问题描述】:
我需要在自己的项目中完成登录任务。幸运的是我发现有人已经完成了。
这是相关代码。
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。
我的想法:
- 由于原始代码使用
opener,虽然不确定,但我认为requests中的等价物是requests.Session - 我应该在提出请求时传递
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`中的答案,我尝试再次提出相同的请求,但这些都不起作用。
这就是我在这里寻求帮助的原因。
有人会告诉我做这项工作的正确方法吗?谢谢~
【问题讨论】:
标签: python python-3.x urllib2 python-requests