2017-02-24 26 views
6

Istnieją pewne adresy URL z [] w nim jakSiła Python Scrapy nie do kodowania URL

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

ale gdy próbuję skrobanie ten URL z Scrapy, to sprawia, że ​​żądanie do tego URL

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

Jak czy mogę zmusić się do scrapy, aby nie przekodować moich adresów URL?

Odpowiedz

2

Podczas tworzenia obiektu do scrapowania w trybie Request stosowane są niektóre metody kodowania adresów URL. Aby je przywrócić, możesz użyć niestandardowego oprogramowania pośredniego i zmienić adres URL do swoich potrzeb.

Można użyć Downloader Middleware takiego:

class MyCustomDownloaderMiddleware(object): 

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

Nie zapomnij "aktywować" middleware w settings.py tak:

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

Mój projekt jest nazwany so w folderze istnieje plik middlewares.py. Musisz dostosować je do swojego środowiska.

+0

Niesamowite, nigdy o tym nie myślałem – Umair