2017-02-24 8 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