Sto cercando di creare un file di download discrapy che può cambiare l'url dell'oggetto di richiesta. Ma non riesco a farlo funzionare con process_request, poiché la pagina di download è ancora quella originale. il mio codice è il seguente:
#middlewares.py
class UrlModifyMiddleware(object):
def process_request(self, request, spider):
original_url = request.url
m_url = "http://whatsmyuseragent.com/"
request.url = m_url
#request = request.replace(url=relay_url)
Il codice per spider:
#spider/test_spider.py
from scrapy.contrib.spiders import CrawlSpider
from scrapy.http import Request
class TestSpider(CrawlSpider):
name = "urltest"
start_url = "http://www.icanhazip.com/"
def start_requests(self):
yield Request(self.start_url,callback=self.parse_start)
def parse_start(self,response):
html_page = response.body
open("test.html", "wb").write(html_page)
In settings.py ho impostato:
DOWNLOADER_MIDDLEWARES = {
"official_index.middlewares.UrlModifyMiddleware": 100,
}
risposte:
0 per risposta № 1Metto alla prova il mio codice esatto con scrapy 0.18.0. Il codice funziona bene. Suppongo che forse sia un bug della versione 0.14.4.