# -*- coding: utf-8 -*-
# Define here the models for your spider middleware
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/spider-middleware.html
import random
import json
from scrapy import signals
from scrapy.downloadermiddlewares.useragent import UserAgentMiddleware
from common import ProxyGenerator
client = ProxyGenerator()
class ProxyMiddlware(object):
"""代理中间件"""
def __init__(self):
self.client = client
def process_request(self, request, spider):
if request.meta.get('proxy'):
pass
else:
# proxy = self.get_proxy()
proxy = {'http': 'http://222.94.146.18:9999', 'https': 'http://222.94.146.18:9999'}
print('当前IP:', proxy)
request.meta['proxy'] = 'http://222.94.146.18:9999'
def get_proxy(self):
proxy_list = self.client.get_ips()
proxy = random.choice(proxy_list)
return proxy
# def process_response(self, request, response, spider):
# if response.status != 200:
# proxy = self.get_proxy()
# print("this is response ip:" + proxy)
# # 对当前reque加上代理
# request.meta['proxy'] = proxy
# return request
# return response
class MyUserAgentMiddleware(UserAgentMiddleware):
def __init__(self, user_agent):
super().__init__()
self.user_agent = user_agent
self.headers = {
"Proxy-Connection": "keep-alive",
"Pragma": "no-cache",
"Cache-Control": "no-cache",
"User-Agent": 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1',
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"DNT": "1",
"Accept-Encoding": "gzip, deflate, sdch",
"Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4",
"Referer": 'http://www.baidu.com/',
"Accept-Charset": "gb2312,gbk;q=0.7,utf-8;q=0.7,*;q=0.7"}
@classmethod
def from_crawler(cls, crawler):
return cls(
user_agent=crawler.settings.get('MY_USER_AGENT')
)
def process_request(self, request, spider):
agent = random.choice(self.user_agent)
# self.headers['Referer'] = request.url
request.headers['User-Agent'] = agent
scrapy 设置请求头和代理
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- Request和Response都会首先经过中间件,所以我们在中间件中定义需要添加的header和params s...
- 若干年前,那时刚毕业没多久,便被一位同学带来这里吃云吞。有多好吃?我们每人三大碗之后,又各买了两斤回家。那年那个味...