1

最終的な URL が既にクロールされている場合を含め、すべてのリダイレクト パスをキャッチするために、カスタムの重複フィルターを作成しました。

import logging

from scrapy.dupefilters import RFPDupeFilter
from seoscraper.items import RedirectionItem

class CustomURLFilter(RFPDupeFilter):

    def __init__(self, path=None, debug=False):
        super(CustomURLFilter, self).__init__(path, debug)

    def request_seen(self, request):
        request_seen = super(CustomURLFilter, self).request_seen(request)

        if request_seen is True:
            item = RedirectionItem()
            item['sources'] = [ u for u in request.meta.get('redirect_urls', u'') ]
            item['destination'] = request.url

        return request_seen

では、RedirectionItem をパイプラインに直接送信するにはどうすればよいでしょうか。データを直接送信できるように、カスタム フィルターからパイプラインをインスタンス化する方法はありますか? または、カスタム スケジューラも作成して、そこからパイプラインを取得する必要がありますが、どのようにすればよいでしょうか?

4

0 に答える 0