MENU

使用Seleium获取cookie并使用(包括在requests中使用)

October 18, 2020 • 数据采集与数据分析(python)

selenium获取cookies的代码:

webdriver.Chrome().get_cookies()

首先先让我们看看selenium获取的cookie的样子:

from selenium import webdriver

url = 'http://www.taobao.com'
browser = webdriver.Chrome()
browser.get(url)
cookie = browser.get_cookies()  #一个大的列表,包含N个字典
print(type(cookie))

for item in cookie:  #遍历列表,print每个字典
    print(item)

运行结果:

<class 'list'>
{'domain': '.taobao.com', 'expiry': 2233750936, 'httpOnly': False, 'name': 'cna', 'path': '/', 'sameSite': 'None', 'secure': True, 'value': 'mD0TGAw/WS4CAa+gE7Zpjgl+'}
{'domain': '.taobao.com', 'expiry': 1603635735, 'httpOnly': False, 'name': '_m_h5_tk_enc', 'path': '/', 'sameSite': 'None', 'secure': True, 'value': 'b67ca1eca662bb431e6c6f52d6b25845'}
{'domain': '.taobao.com', 'expiry': 1618582935, 'httpOnly': False, 'name': 'isg', 'path': '/', 'secure': False, 'value': 'BIKCf5IBadEnX3UNs5wicB3P04jkU4Ztr0iB8sybrvWgHyKZtOPWfQjdyxpjT_4F'}
{'domain': '.taobao.com', 'httpOnly': False, 'name': '_tb_token_', 'path': '/', 'secure': False, 'value': '3a5393b755be'}
{'domain': '.taobao.com', 'expiry': 1603635735, 'httpOnly': False, 'name': '_m_h5_tk', 'path': '/', 'sameSite': 'None', 'secure': True, 'value': 'eb4ad25c69b72a6196a3df7c06a3cbab_1603038136370'}
{'domain': '.taobao.com', 'httpOnly': False, 'name': 'v', 'path': '/', 'secure': False, 'value': '0'}
{'domain': '.taobao.com', 'expiry': 1610806935, 'httpOnly': False, 'name': 't', 'path': '/', 'secure': False, 'value': '31837d974b986028abcc99259cf2af37'}

从结果中可以看到,get_cookies函数返回的是一个列表类型<class 'list'>,其中包括N个字典。在字典中真正有用的是name和value,所以我们要提取出这两个键值对,并重新组成字典。

提取和组成过程:


for item in cookie:  #遍历列表,输出每个字典(item)
    print(item)
    dict_cookie[item['name']] = item['value']  #提取字典中key=‘name’到新的cookie字典dict_cookie中

print('-------------------------------------------')
print(dict_cookie)

最终结果:

 {'cna': 'iUETGBjJlw8CAa+gE7Zgnfyi',
 '_m_h5_tk_enc': '426103301943356d88d1ed82ec8d3c2d', 
'isg': 'BOvruVVMML46zGxqHhDHE1WZeg_VAP-C7gs4VV1oxCqB_Ate5dJB0HveUj2SXFd6', 
'_tb_token_': 'e05ede4365be', 
'_m_h5_tk': '7ff382bd84261912448930a52ced427c_1603042025008', 
'v': '0', 
't': '8d10ee06817cbb1bc0d4b30e1dc6471a'}

成功提取出cookie后使用requests登录:

r = requests.get(url,cookies=dict_cookie)
print(r.cookies)

最终如图:
result—cookie.jpg

完整代码:

from selenium import webdriver
import requests
import json

url = 'http://www.taobao.com'
browser = webdriver.Chrome()
browser.get(url)
cookie = browser.get_cookies()  #一个大的列表,包含N个字典
print(type(cookie))

dict_cookie = {}

for item in cookie:  #遍历列表,输出每个字典(item)
    print(item)
    dict_cookie[item['name']] = item['value']

print('-------------------------------------------')
print(dict_cookie)

r = requests.get(url,cookies=dict_cookie)
print(r.cookies)