存储形式:

  • 存储在redis中,“spider_name:username–password":cookie

建立py文件及包含方法:

  • initcookies() 初始化所有账号的cookies,将所有账号对用进行登陆获取cookies并保存在redis中
  • update_cookie(spider_name,username,password)   # 重新获取账号对应的cookies,并存入redis中
  • remove_cookie(spider_name,usrname,password)    # 从redis中删除改账号对应的cookie
  • get_cookie(username,password)    # 尝试登陆该账号获取cookies

在scrapy下载器中间件的process_request()随机从cookie池选择一个cookie,对request进行设置,并在request的meta中保存cookie对应的账号

def process_request(self,request,spider):
# 获取redis中所有的键(假设redis中只保存了cookies)
redisKeys = self.rconn.keys()
elem = random.choice(redisKeys)
request.cookies = cookie
# 在请求中记录当前cookies对应的账号和密码
request.meta["accountText"] = elem.split(":")[-1]

在下载器中间件的process_response()获取响应,如果响应状态码为301、302等,说明页面重定向,该cookie失效,进行cookie的更新与删除

def process_response(self,request,response,spider):
if response.status in [300, 301, 302, 303]:
# 获取重定向的url
redirect_url = response.headers["location"]
if url == "login_url":# 如果是登陆页面,说明当前cookies失效了,需要更新
username,passworod = request.meta['accountText'].split("--")
update_cookie(spider_name,username,password)
elif url=="验证页面":# 说明账号被封了
username,passworod = request.meta['accountText'].split("--")
remove_cookie(spider_name,username,password)
request = request.copy()
request.dont_filter = True
return request

最新文章

  1. 用RollViewPager实现Android滚动banner
  2. Replication的犄角旮旯(一)--变更订阅端表名的应用场景
  3. 新手107条常用javascript语句
  4. C# Process执行bat
  5. proxmox3.2安装FreeBSD或者FreeNAS注意事项
  6. Vmware出现报错The VMware Authorization Service is not running.之后无法上网解决
  7. Very simple problem - SGU 111(大数开方)
  8. Leetcode_Best Time to Buy and Sell Stock
  9. 【算法】插入排序 insertion_sort
  10. OCP读书笔记(12) - 执行闪回数据库
  11. Ubuntu 如何重新安裝 Unity ?
  12. 探讨SQL Server并发处理存在就更新七种解决方案
  13. ThinkPHP3.2基础知识(三)
  14. Python的条件判断语句------if/else语句
  15. redis 中主从、哨兵和集群分片模式这三个有什么区别 ?
  16. Hadoop Shell命令(基于linux操作系统上传下载文件到hdfs文件系统基本命令学习)
  17. python中的字符串
  18. 洛谷 P1282 多米诺骨牌("01"背包)
  19. 京东的Netty实践,京麦TCP网关长连接容器架构
  20. Mysql 时间类型整理

热门文章

  1. Programming In Lua 第五章
  2. 基于STM32之UART串口通信协议(三)接收
  3. CentOs7.5安装FFmpeg
  4. HDU 6019:MG loves gold(暴力set)
  5. Flink会话窗口测试
  6. 西门子S7-1200与 G120系列变频器USS通信
  7. 数字IC后端布局阶段对Tie-high和Tie-low Net的处理
  8. Oracle数据库常用脚本命令(二)
  9. VUE-CLI3.0脚手架安装
  10. 基于SpringBoot从零构建博客网站 - 设计可扩展上传模块和开发修改头像密码功能