machte ich die Verbesserung gemäß dem Vorschlag von alexce unten. Was ich brauche, ist wie das Bild unten. Jede Zeile/Zeile sollte jedoch eine Überprüfung sein: mit Datum, Bewertung, Bewertungstext und Link.Scrapy Pipeline zu exportieren CSV-Datei im richtigen Format
Ich brauche Punkt Prozessor Prozess jede Überprüfung von jeder Seite zu lassen.
Derzeit TakeFirst() nimmt nur die erste Bewertung der Seite. Also 10 Seiten, ich habe nur 10 Zeilen/Zeilen wie im Bild unten.
Spinne Code ist unten:
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
Sie wollen nur die Überprüfung Text in der Ausgabe zu sein, nicht wahr? – alecxe
@alecxe nein, mein Herr. nur als ein Beispiel. Ich möchte Bewertung, Datum, Bewertung, Link als 4 verschiedene Spalten in Excel haben. Vielen Dank! –
@alecxe das ist mein Versuch unten. Es hat nicht funktioniert. wahrscheinlich, weil ich die Mechanik für die Pipeline nicht verstehe. import CSV Klasse CsvWriterPipeline (object): def __init __ (self): self.csvwriter = csv.writer (open ('amazon.csv', 'wb')) def process_item (self, Element, Spinne): self.csvwriter.writtenow (Artikel ['Bewertung'], Artikel ['Datum'], Artikel ['Bericht'], Artikel ['Link']) Artikel zurückgeben –