scrapy 避免被ban
1、settings.py COOKIES_ENABLED = False
DOWNLOAD_DELAY = 3
ROBOTSTXT_OBEY = False ip代理池设置
IPPOOL = [{'ipadder':'1.1.1.1'},
        {'ipadder':'2.1.1.1'},
        {'ipadder': '1.3.1.1'},
        {'ipadder': '1.1.1.4'},
        ]
DOWNLOADER_MIDDLEWARES = {
   #'Autopjt.middlewares.MyCustomDownloaderMiddleware': 543,
   'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware':123,
   'Autopjt.middlewares.IPPOOLS':125,
}
2、middlewares.py
import random
from Autopjt.settings import IPPOOL
from scrapy.contrib.downloadermiddleware.httpproxy import HttpProxyMiddleware class IPPOOLS(HttpProxyMiddleware):
def __init__(self,ip=''):
self.ip = ip
def process_request(self, request, spider):
thisip = random.choice(IPPOOL)
# 将对应的IP实际添加为具体代理,用该ip进行爬取
request.meta['proxy']='http://' + thisip['ipaddr']
UA池
UAPOOL = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.103 Safari/537.36',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.104 Safari/537.36',]
DOWNLOADER_MIDDLEWARES = {
   #'Autopjt.middlewares.MyCustomDownloaderMiddleware': 543,
   #'scrapy.contrib.downloadermiddleware.httpproxy.HttpProxyMiddleware':123,
   #'Autopjt.middlewares.IPPOOLS':125,
   'scrapy.contrib.downloadermiddleware.useragent.UserAgentMiddleware':2,
   'Autopjt.middlewares.Uamid':1
}
middlewares.py
import random
from Autopjt.settings import UAPOOL
from scrapy.contrib.downloadermiddleware.useragent import UserAgentMiddleware class Uamid(UserAgentMiddleware):
def __init__(self,ua=''):
self.ua = ua
def process_request(self, request, spider):
thisua = random.choice(UAPOOL)
request.headers.setdefault('User-Agent',thisua)
scrapy 避免被ban的更多相关文章
- 如何让你的scrapy爬虫不再被ban
		前面用scrapy编写爬虫抓取了自己博客的内容并保存成json格式的数据(scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据)和写入数据库(scrapy爬虫成长日记之将抓取内容写入 ... 
- 豆瓣网post 爬取带验证码
		# -*- coding: utf- -*- import scrapy import requests from ..bao.jiema import get_number fromdata = { ... 
- 如何让你的scrapy爬虫不再被ban之二(利用第三方平台crawlera做scrapy爬虫防屏蔽)
		我们在做scrapy爬虫的时候,爬虫经常被ban是常态.然而前面的文章如何让你的scrapy爬虫不再被ban,介绍了scrapy爬虫防屏蔽的各种策略组合.前面采用的是禁用cookies.动态设置use ... 
- Scrapy研究和探索(七)——如何防止被ban大集合策略
		说来设置的尝试download_delay少于1,不管对方是什么,以防止ban策略后.我终于成功ban该. 大约scrapy利用能看到以前的文章: http://blog.csdn.net/u0121 ... 
- Scrapy 爬虫 使用指南 完全教程
		scrapy note command 全局命令: startproject :在 project_name 文件夹下创建一个名为 project_name 的Scrapy项目. scrapy sta ... 
- Python爬虫Scrapy框架入门(2)
		本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写 ... 
- Python之Scrapy爬虫框架安装及简单使用
		题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ... 
- Scrapy 爬虫
		Scrapy 爬虫 使用指南 完全教程 scrapy note command 全局命令: startproject :在 project_name 文件夹下创建一个名为 project_name ... 
- 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
		试想一下,前面做的实验和例子都只有一个spider.然而,现实的开发的爬虫肯定不止一个.既然这样,那么就会有如下几个问题:1.在同一个项目中怎么创建多个爬虫的呢?2.多个爬虫的时候是怎么将他们运行起来 ... 
随机推荐
- MySQL的sum()函数
			如下图,这是一个关于用户参加活动,每个活动会给这位用户评分的一个表: 用户1参加了A活动,评分100: 用户2参加了B活动,评分98,又参加了D活动,评分10: 用户3参加了C活动,评分99 需求:把 ... 
- 打印Java异常堆栈信息
			背景 在开发Java应用程序的时候,遇到程序抛异常,我们通常会把抛异常时的运行时环境保存下来(写到日志文件或者在控制台中打印出来).这样方便后续定位问题. 需要记录的运行时环境包含两部分内容:抛异常时 ... 
- 无后台应用 Stash Backend
			Stash Backend 是Github上的开源项目 https://github.com/gaboratorium/stash,目的在于提供一套方便使用.方便部署的后台应用.特别适合为Web前端和 ... 
- FJUT16级第一周寒假作业题解J题
			题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P9 涨姿势之区间刷新 TimeLimit:2000MS MemoryLimit:128M ... 
- 在lamp上简单部署应用程序
			前言:上文中,说到了lamp的基本原理,apache与php的三种交互模式,php与mysql(mariadb)的交互,一次完整lamp的请求. LAMP简单的部署之后,便能够简单的搭建自己的网站. ... 
- 使用Angular CLI生成 Angular 5项目
			如果您正在使用angular, 但是没有好好利用angular cli的话, 那么可以看看本文. Angular CLI 官网: https://github.com/angular/angular- ... 
- jemeter 实现接口自动化回归测试
			jemeter做接口自动化测试的优点: 1.首先我认为最重要的是不需要编程基础,很多一直想做接口测试但一直徘徊在门边的原因可能就是不想写代码 2.可以更快的上手,能让测试人员更好的理解什么是接口测试, ... 
- Spring shiro 初次使用小结
			首先引入一段关于shiro的介绍: 开发系统中,少不了权限,目前java里的权限框架有SpringSecurity和Shiro(以前叫做jsecurity),对于SpringSecurity:功能太过 ... 
- Unity3d底层数据传递分析
			WeTest 导读 这篇文章主要分析了在Mono框架下,非托管堆.运行时.托管堆如何关联,以及通过哪些方式调用.内存方面,介绍了什么是封送,以及类和结构体的关系和区别. 一.托管交互(Interop) ... 
- 用C#语言编写:集合管理器
			static void Main(string[] args) { List<int> numbers = new List<int>(); ... 
