2017-02-24 17 views
6

Có một số URL với [] trong nó nhưForce Python Scrapy không để mã hóa URL

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

Nhưng khi tôi cố gắng cào URL này với Scrapy, nó làm cho Yêu cầu URL này

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

thế nào sao tôi có thể buộc không được mã hóa url của mình?

Trả lời

2

Khi tạo một mẩu đối tượng Request, hãy áp dụng một số phương pháp mã hóa url. Để hoàn nguyên, bạn có thể sử dụng phần mềm trung gian tùy chỉnh và thay đổi url theo nhu cầu của mình.

Bạn có thể sử dụng một Downloader Middleware như thế này:

class MyCustomDownloaderMiddleware(object): 

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

Đừng quên "kích hoạt" các trung gian trong settings.py như vậy:

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

Dự án của tôi được đặt tên so và trong thư mục có một tập tin middlewares.py. Bạn cần phải điều chỉnh chúng cho môi trường của bạn.

+0

Tuyệt vời, không bao giờ nghĩ về điều đó – Umair

Các vấn đề liên quan