2017-08-11 2 views
1

Dans le terminal, j'ai couruExiste-t-il un moyen de traiter l'objet scrapy.Request dans le shell?

scrapy startproject tutorial 

J'ai créé l'araignée suivante dans le dossier spiders

import scrapy 

class QuotesSpider(scrapy.Spider): 
    name = "quotes" 
    start_urls = ['http://quotes.toscrape.com/page/1/'] 

Dans le terminal, j'ai couru

scrapy shell 'http://quotes.toscrape.com/page/1/' 

Tout cela fonctionne bien comme dans le shell Python qui s'ouvre je reçois

>>> response 
<200 http://quotes.toscrape.com/page/1/> 

Maintenant, j'ai couru

>>> next_page = response.css('li.next a::attr(href)').extract_first() 
>>> next_page 
'/page/2/' 

>>> response.follow(next_page) 
<GET http://quotes.toscrape.com/page/2/> 

>>> type(response.follow(next_page)) 
<class 'scrapy.http.request.Request'> 

Je voudrais obtenir un nouvel objet Response dans la coquille, sur la base du lien vers next_page. Est-ce possible? Toute aide est très appreciée.

J'ai déjà essayé ci-dessous, mais je n'ai pas réussi à corriger l'erreur.

>>> scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware.process_request(response.follow(next_page), "quotes") 
Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
TypeError: process_request() missing 1 required positional argument: 'spider' 

Répondre

1

Utilisation fetch():

>>> fetch(response.follow(next_page))