--2019-08-09 11時05分53秒[Scrapyフレームワークは、UA剤プール、プールを設定しました]

オリジナル:http://106.13.73.98/__/142/

あなたの神経を安定するために張Scrapyフレームワークマップ、先着


ここに画像を挿入説明

ダウンロードミドルウェア(ダウンローダミドルウェア)アセンブリは、エンジンと、ダウンロードの間Scrapy層が配置されています。

その役割は、以下のとおりです。

  1. エンジンの過程でダウンロード、処理要求のダウンロードミドルウェアシリーズへの要求を渡します。このような設定としてUser--エージェントをプロキシIP設定などを。
  2. 応答処理は、ダウンロードエンジンで反応器に渡され、ミドルウェアは、治療反応のシリーズをダウンロードすることができます。例えば、その上のgzipで解凍を行います。

以下は、UAプールとエージェント・プールを達成するためのミドルウェアをダウンロードするために使用されます


私たちは、一般的に要求を処理するためにダウンロードしたミドルウェアを使用して、要求は、一般的なランダムのUser-Agent、プロキシのIPを設定します。目的は、抗爬虫類のポリシーがサイトをクロールされないようにすることです。

基本手順は次のとおりです。

  1. ミドルウェアでは、要求をインターセプト。
  2. 改ざんを要求傍受のUser-Agentをし、IPプロキシを設定します
  3. 設定ファイルで有効にダウンロードミドルウェアDOWNLOADER_MIDDLEWARES

ミドルウェアファイルmiddlewares.pyのコードは次のとおりです。

import random
from fake_useragent import UserAgent  # UA库,我们这里就使用它来做UA池


# 这个便是下载中间价
class BlogDownloaderMiddleware(object):

    # 我们先定义好代理池
    http = ['http://218.60.8.83:3129', 'http://59.44.247.194:9797']
    https = ['https://85.62.30.211:8080', 'https://101.248.64.68:8080']
    # http://www.goubanjia.com 提供很好的代理ip

    def process_request(self, request, spider):
        """
        这是下载中间件中 拦截请求 的方法
        :param request: 拦截到的请求
       """
       # print(request)  # <GET https://www.baidu.com/s?wd=ip>

       ua = UserAgent(use_cache_server=False).random  # 生成随机UA
       request.headers['User-Agent'] = ua  # 将生成的UA写入请求头中

       # 判断请求是超文本传输协议,还是安全套接字超文本传输协议,并对其使用对应的代理池
       request.meta['proxy'] = random.choice(getattr(self, request.url.split(':')[0]))

       return None


    def process_response(self, request, response, spider):
       """这是下载中间件中 拦截响应 的方法"""
       print(response)  # <200 https://www.baidu.com/s?wd=ip>
       return response

最後に、設定ファイルにsettings.pyダウンロードミドルウェアを有効にします。

# 开启下载中间件
DOWNLOADER_MIDDLEWARES = {
   'blog.middlewares.BlogDownloaderMiddleware': 543,
}

オリジナル:http://106.13.73.98/__/142/

おすすめ

転載: www.cnblogs.com/gqy02/p/11325921.html