Python爬虫学习(二十)Download Middlewar
2018-01-21 本文已影响60人
弃用中
以下为Scrapy的整体架构:

可以看到,Download Middleware位于Scrapy Engine和Downloader之间,来来往往的Requests和Responses都会经过它,我们可以写属于自己的Downloader Middleware,通过它设置比如代理,请求头等等。
要实现我们自己的Download Middleware,


至少得要实现这三个中的某一个。
下面就演示一下设置代理:
在工程的middlewares.py
文件中加入
class ProxyMiddleware(object):
def process_request(self,request, spider):
request.meta['proxy'] = 'http://127.0.0.1:1080'
return None
我在本机安装了代理软件,它会在本地1080端口上创建 HTTP 代理服务,也就是代理为 127.0.0.1:1080.
要想"激活"一个download middleware还需要设置一下:

spider的内容为:
# -*- coding: utf-8 -*-
import scrapy
class QuotesSpider(scrapy.Spider):
name = 'quotes'
start_urls = ['http://httpbin.org/ip']
def parse(self, response):
print(response.text)
接下来,就是运行了咯:

查看一下:

更多内容请看:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
以上。
