【发布时间】:2015-07-08 16:48:10
【问题描述】:
我根据下面alexce的建议进行了改进。我需要的是如下图。然而,每一行/每一行都应该是一个评论:带有日期、评分、评论文本和链接。
我需要让项目处理器处理每个页面的每个评论。
目前 TakeFirst() 只对页面进行第一次审查。所以 10 页,我只有 10 行/行,如下图。
蜘蛛代码如下:
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
【问题讨论】:
-
您只想在输出中显示评论文本,对吧?
-
@alecxe 不,先生。只是作为一个例子。我想在 excel 中将评级、日期、评论、链接作为 4 个不同的列。谢谢!
-
@alecxe 这是我在下面的尝试。它不起作用。可能是因为我不了解管道的机制。导入 csv 类 CsvWriterPipeline(object): def __init__(self): self.csvwriter = csv.writer(open('amazon.csv', 'wb')) def process_item(self, item, spider): self.csvwriter.writenow (item['rating'], item['date'], item['review'], item['link']) return item
-
您为什么要自己处理 CSV 导出?您还可以使用
scrapy crawl amazon -t csv -o Output_File.csv获取包含您的字段的 csv 文件。然后可以将其导入您喜欢的电子表格程序。 -
如果您在命令行中使用
-t csv,格式将为CSV 格式...也许您想尝试一下!?看看documentation。
标签: python csv scrapy pipeline