Je suis nouveau à Scrapy et je suis vraiment juste perdu sur la façon dont je peux retourner plusieurs articles dans un bloc. Fondamentalement, je reçois un tag HTML qui a une citation qui contient des balises imbriquées de texte, le nom de l'auteur, et quelques balises sur cette citation.Scrapy Return Plusieurs articles
Le code ici renvoie seulement un devis et c'est tout. Il n'utilise pas la boucle pour retourner le reste. Je fais des recherches sur le web depuis des heures et je suis désespéré de ne pas comprendre. Voici mon code à ce jour:
Spider.py
import scrapy
from scrapy.loader import ItemLoader
from first_spider.items import FirstSpiderItem
class QuotesSpider(scrapy.Spider):
name = 'quotes'
allowed_domains = ['quotes.toscrape.com']
start_urls = ['http://quotes.toscrape.com/']
def parse(self, response):
l = ItemLoader(item = FirstSpiderItem(), response=response)
quotes = response.xpath("//*[@class='quote']")
for quote in quotes:
text = quote.xpath(".//span[@class='text']/text()").extract_first()
author = quote.xpath(".//small[@class='author']/text()").extract_first()
tags = quote.xpath(".//meta[@class='keywords']/@content").extract_first()
# removes quotation marks from the text
for c in ['“', '”']:
if c in text:
text = text.replace(c, "")
l.add_value('text', text)
l.add_value('author', author)
l.add_value('tags', tags)
return l.load_item()
next_page_path =
response.xpath(".//li[@class='next']/a/@href").extract_first()
next_page_url = response.urljoin(next_page_path)
yield scrapy.Request(next_page_url)
Items.py
import scrapy
class FirstSpiderItem(scrapy.Item):
text = scrapy.Field()
author = scrapy.Field()
tags = scrapy.Field()
Voici la page que je suis en train de gratter:
J'ai déjà créé cette araignée sous cette forme. J'essaye de le créer en utilisant des articles au lieu de céder. Merci pour votre réponse quand même! –