Pipeline Scrapy pour exporter le fichier csv dans le bon format
J'ai fait de l'amélioration selon la suggestion de alexce ci-dessous. Ce dont j'ai besoin, c'est comme l'image ci-dessous. Cependant, chaque ligne/ligne devrait être un examen: avec date, d'évaluation, d'examen texte et le lien.
J'ai besoin de laisser élément processeur de traitement de chaque examen de chaque page.
Actuellement TakeFirst() ne prend que la première révision de la page. Donc 10 pages, je n'ai que 10 lignes/lignes comme dans l'image ci-dessous.
Spider code est ci-dessous:
import scrapy
from amazon.items import AmazonItem
class AmazonSpider(scrapy.Spider):
name = "amazon"
allowed_domains = ['amazon.co.uk']
start_urls = [
'http://www.amazon.co.uk/product-reviews/B0042EU3A2/'.format(page) for page in xrange(1,114)
]
def parse(self, response):
for sel in response.xpath('//*[@id="productReviews"]//tr/td[1]'):
item = AmazonItem()
item['rating'] = sel.xpath('div/div[2]/span[1]/span/@title').extract()
item['date'] = sel.xpath('div/div[2]/span[2]/nobr/text()').extract()
item['review'] = sel.xpath('div/div[6]/text()').extract()
item['link'] = sel.xpath('div/div[7]/div[2]/div/div[1]/span[3]/a/@href').extract()
yield item
source d'informationauteur W.S.
Vous devez vous connecter pour publier un commentaire.
J'ai commencé à partir de zéro et la suite de l'araignée doit être exécuté avec
scrapy crawl amazon -t csv -o Amazon.csv --loglevel=INFO
de sorte que l'ouverture du Fichier CSV avec une feuille de calcul montre pour moi
Espère que cela aide 🙂
Si vous utilisez
-t csv
(comme proposé par Frank dans les commentaires) ne fonctionne pas pour vous, pour une raison quelconque, vous pouvez toujours utiliser les haut-CsvItemExporter
directement dans le pipeline personnalisépar exemple:que vous devez ajouter à
ITEM_PIPELINES
:Aussi, je voudrais utiliser une Élément De Chargeur avec entrée et sortie des processeurs pour rejoindre la révision de texte et remplacez les nouvelles lignes avec des espaces. Créer un
ItemLoader
classe:Puis, l'utiliser pour construire un
Item
: