2017-02-24 15 views
6
をエンコードしない

フォースパイソンScrapy URL

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

しかし、私はScrapyでこのURLをこするしようとすると、それはこのURLに要求を行うようなことで[]といくつかのURLがあります

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

方法私はURLにURLを付けないように強制することができますか?

答えて

2

Requestオブジェクトを作成すると、いくつかの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があります。あなたはあなたの環境にそれらを調整する必要があります。

+0

恐ろしいですね。 – Umair