|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 johnnyb 于 2020-7-29 20:57 编辑
问题描述:
我用selenium模拟登陆douban.登陆成功. 用webdriver.get_cookies()方法 取得登陆成功的cookies为[{'domain': 'accounts.douban.com', 'httpOnly': False, 'name': 'login_start_time', 'path': '/', 'secure': False, 'value': '1596025621029'}, {'domain': 'accounts.douban.com', 'httpOnly': False, 'name': 'apiKey', 'path': '/', 'secure': False, 'value': ''}, {'domain': '.douban.com', 'expiry': 1627561620, 'httpOnly': False, 'name': 'bid', 'path': '/', 'secure': False, 'value': '-dDW2CjywbM'}]
我把他直接放到headers中. requests.get(url) 可以取得登陆成功页面. 但是我的目标是把这个cookies传递给requests.Session对象s用. 让它一直维持登陆状态. 获取需要登陆才能取到的个人主页.
当我用.for cookie in cookies:
s.cookies.set(cookie['name'], cookie['value'])
发现. selenium的get_cookies()方法. 传回来的是一个列表. 列表中有3个字典. 这样for他就循环3次. 就完事了. 所以就过去3个值('apiKey', '')
('bid', '-dDW2CjywbM')
('login_start_time', '1596025621029')
我如何能让所有的 name,value 全部过去呢?
尝试了把3个字典合成1个.. 但是里面存在多个重复name 会被顶替成最后一个. 很无解..
或者有没有更好的转换方案? 或者模块?
纠正一下我在2楼的说法,我仔细看了一些requests的cookie,和selenium虽然对象类型不同,但是内容是差不多的。 >>> s = requests.session()
>>> s.cookies
<RequestsCookieJar[]>
>>> s.cookies.set('BID','123')
Cookie(version=0, name='BID', value='123', port=None, port_specified=False, domain='', domain_specified=False, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)
>>>
可以看出也有domain,path等参数,所以从selenium获得的cookie字典,需要看看是否与默认值相同,不同就需要传入:s.cookies.set('BID', '123', domain='www.aidu.com', expires='')
|
|