当前位置 博文首页 > wang785994599的博客:scrapy技巧

    wang785994599的博客:scrapy技巧

    作者:[db:作者] 时间:2021-09-06 18:52

    最近写scrapy的时候,有些链接会自动重定向,就导致了不同的错误都重定向到了一个相同的页面,导致无法根据响应内容做对应的处理,查了文档,关闭重定向的方式为:

    REDIRECT_ENABLED  = False

    但是经过实际测试,该重定向只能针对响应状态为302,301的重定向进行处理,无法处理通过元数据进行重定向的页面,类似于:

    <meta http-equiv="refresh" content="6;URL=https://weibo.cn/pub/" />

    REDIRECT_ENABLED? 对这类重定向做不出任何反应。

    后来继续查阅文档,发现有个默认启用的下载中间件:

    scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware

    将此中间件关闭即可,完整的配置为:

    REDIRECT_ENABLED  = False
    DOWNLOADER_MIDDLEWARES = {
        ...
        'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': None,
        'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware':None
    }
    

    如何在scrpay-redis爬虫运行时指定指定redis_key?

        def __init__(self, redis_key=None, *args, **kwargs):
            super(SinglecralwSpider, self).__init__(*args, **kwargs)
            self.redis_key = redis_key

    启动时用一下命令传参

    scrapy crawl ReMobile -a redis_key=my_test

    ?

    cs