对于一些网站在访问的时候是会遇到cookie的问题,但直接获取cookie不去激活则是无效的,但又有一定的反爬措施,而爬取全站一般只需要获取一次cookie,因此用selenium也磨刀不误砍柴工
准备工作
scrapy中设置
# 在scrapy settings中设置
COOKIES_ENABLED = True
selenium对应的函数
get_cookies() 获得cookie信息
add_cookie(cookie_dict) 添加cookie
delete_cookie(name) 删除特定(部分)的cookie
delete_all_cookies() 删除所有的cookie
激活cookie
首先发送请求获取到cookies或者set-cookie然后保存到COOKIES,这里不做过多代码演示,直接requests一般都能获取到cookie或者set-cookie cookies = response.headers['Set-Cookie']
下面时激活cookie
driver.get("https://www.xxx.com/User/login.html")
for item in COOKIES.split(';'):
name,value = item.split('=',1)
name=name.replace(' ','').replace('\r','').replace('\n','')
value = value.replace(' ','').replace('\r','').replace('\n','')
cookie_dict={
'name':name,
'value':value,
"domain": "", # google chrome
"expires": "",
'path': '/',
'httpOnly': False,
'HostOnly': False,
'Secure': False
}
# 在添加之前一定要先发送请求,不然会报错
self.driver_.add_cookie(cookie_dict)
driver.get("https://www.xxx.com/User/login.html")
这里运行了两次driver.get("https://www.xxx.com/User/login.html")
在调用add_cookie的时候一定要先发送。接着将其封装成一个函数,然后就可以激活cookie了