有些网址带有[]在里面喜欢

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?

请您参考如下方法:

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

您可以像这样使用下载器中间件:

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。您需要根据您的环境调整它们。


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

python - 在 python 中以相反的顺序柯里化(Currying)