博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scrapy mid中间件一般处理方法
阅读量:6605 次
发布时间:2019-06-24

本文共 1512 字,大约阅读时间需要 5 分钟。

import user_agentimport requestsclass UA_midd(object):    def process_request(self,request,spider):        request.headers['User-Agent'] = user_agent.generate_user_agent()        referer = request.url        if referer:            request.headers['Referer'] = refererclass Proxy_midd(object):    def __init__(self):        self.ip = ''        self.url = 'http://188.131.212.24:5010/get/'        self.count = 0    def process_request(self, request, spider):        if self.count == 0 or self.count >=20:            res = requests.get(url=self.url).content.decode()            if not 'no' in res:                self.ip = res            self.count = 1        if self.ip:            request.meta['proxy'] = 'http://' + self.ip            self.count += 1        else:            self.count += 5    def process_exception(self, request, exception, spider):        if isinstance(request,TimeoutError):            self.count += 20            return request

单纯的处理ua和ip的功能

# 如果你是通过cookies池进行维护的,请请求不过是的cokies# 注意在中间件中设置cookies是字典化的import jsonimport requestsclass cookies_mid(object):        def __init__(self):            slef.cookies_url = '你维护的cookies池'                def process_request(self,request,spider):            request.cookies = self.get_cookies()                                        def get_cookies(self):            cookies = requests.get(self.cookies_url).content.decode()            if cookies:                return json.loads(cookies)

 cookies更换

 

 

 



有关资料 

 

转载于:https://www.cnblogs.com/zengxm/p/11094666.html

你可能感兴趣的文章
yun install java
查看>>
Android -- OkHttp的简单使用和封装
查看>>
POJ 1991 DP
查看>>
Hibernate 分组查询 子查询 原生SQL
查看>>
软件工程_第二次作业
查看>>
有关vue的一点点收获
查看>>
数据结构之栈与队列
查看>>
centos常用网络管理命令
查看>>
mysql主从配置(基于mysql5.5.x)
查看>>
mysql表时间戳字段设置
查看>>
如何将本地vue项目上传到github
查看>>
极验验证码示例
查看>>
# 基于Gitolite搭建Git Server - 支持SSH&HTTP
查看>>
C# DllImport的用法
查看>>
Flask 中command的使用
查看>>
Java SVN检出项目出现报错,Expected value at 1:0 Expected value at 2:0 Expected value at xx:xx错误的解决,实测解决...
查看>>
业务侧有大量timeout请求超时日志
查看>>
openwrt makefile选项
查看>>
JavaScript常用编程问题记录
查看>>
前端知识总结-2018上篇
查看>>