2017-08-11 3 views
1

Im Terminal, lief ichGibt es eine Möglichkeit, scrapy.Request Objekt in der Shell zu verarbeiten?

scrapy startproject tutorial 

ich folgende Spinne im

import scrapy 

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

Im Terminal spiders Ordner erstellt, lief ich

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

Das alles funktioniert gut, wie in Die Python-Shell, die sich öffnet, bekomme ich

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

Nun lief ich

>>> 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'> 

Ich mag würde ein neues Response Objekt in der Schale erhalten, basierend auf den Link zu next_page. Ist das überhaupt möglich? Jede Hilfe sehr geschätzt.

Ich versuchte das unten bereits, aber konnte den Fehler nicht beheben.

>>> 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' 

Antwort

1

Verwendung fetch():

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