【问题标题】:Force Python Scrapy not to encode URL强制 Python Scrapy 不编码 URL
【发布时间】:2017-07-15 15:59:12
【问题描述】:

有些网址里有[],比如

http://www.website.com/CN.html?value_ids[]=33&value_ids[]=5007

但是当我尝试用 Scrapy 抓取这个 URL 时,它会向这个 URL 发出请求

http://www.website.com/CN.html?value_ids%5B%5D=33&value_ids%5B%5D=5007

如何强制 scrapy 不对我的 URL 进行 urlenccode?​​p>

【问题讨论】:

    标签: python python-2.7 scrapy scrapy-spider


    【解决方案1】:

    在创建Request 对象时,scrapy 应用了一些 url 编码方法。要恢复这些,您可以使用自定义中间件并根据需要更改 url。

    您可以像这样使用Downloader Middleware

    class MyCustomDownloaderMiddleware(object):
    
        def process_request(self, request, spider):
            request._url = request.url.replace("%5B", "[", 2)
            request._url = request.url.replace("%5D", "]", 2)
    

    不要忘记像这样“激活”settings.py 中的中间件:

    DOWNLOADER_MIDDLEWARES = {
        'so.middlewares.MyCustomDownloaderMiddleware': 900,
    }
    

    我的项目名为so,文件夹中有一个文件middlewares.py。您需要根据您的环境调整它们。

    【讨论】:

    • 太棒了,没想到
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    • 1970-01-01
    • 2014-09-13
    相关资源
    最近更新 更多