2015-12-23 173 views
3

我需要在下載響應之前修改我的請求url。但我無法改變它。即使在使用request.replace(url=new_url)修改請求網址之後,process_response也會打印未修改的網址。這裏是中間件的代碼:如何在scrapy中提出請求之前更改請求url?

def process_request(self, request, spider): 
    original_url = request.url 
    new_url= original_url + "hello%20world" 
    print request.url   # This prints the original request url 
    request=request.replace(url=new_url) 
    print request.url   # This prints the modified url 

def process_response(self, request, response, spider): 
    print request.url   # This prints the original request url 
    print response.url   # This prints the original request url 
    return response 

任何人都可以告訴我我在這裏失蹤了什麼?

回答

3

因爲要修改的request對象process_request() - 你需要返回它

def process_request(self, request, spider): 
    request = request.replace(url=request.url + "hello%20world") 
    return request 
+0

它進入一個無限循環。但我現在得到了流量。我需要返回新的請求,以便它可以被處理。我用'if'條件檢查URL是否被修改,然後返回請求。謝謝您的幫助。 – Rahul