使用scrapy创建蜘蛛并且无法将数据存储到csv

时间:2017-10-10 14:15:03

标签: scrapy web-crawler

我对scrapy很陌生,在这里我使用亚马逊网址创建了一个蜘蛛,无法将输出输出到csv。

这是我的代码:

import scrapy

class AmazonMotoMobilesSpider(scrapy.Spider):
name = "amazon"
start_urls = ['https://www.amazon.in/Samsung-Mobiles/b/ref=amb_link_47?ie=UTF8&node=4363159031&pf_rd_m=A1VBAL9TL5WCBF&pf_rd_s=merchandised-search-leftnav&pf_rd_r=NGA52N9RAWY1W103MPZX&pf_rd_r=NGA52N9RAWY1W103MPZX&pf_rd_t=101&pf_rd_p=1ce3e975-c6e8-479a-8485-2e490b9f58a9&pf_rd_p=1ce3e975-c6e8-479a-8485-2e490b9f58a9&pf_rd_i=1389401031',]
def parse(self,response):
    product_name = response.xpath('//h2[contains(@class,"a-size-base s-inline  s-access-title  a-text-normal")]/text()').extract()
    product_price = response.xpath('//span[contains(@class,"a-size-base a-color-price s-price a-text-bold")]/text()').extract()
    yield {'product_name'product_name,'product_price': product_price}

我的shell显示了这个结果:

  

len(response.xpath(' // h2 [contains(@class," a-size-base s-inline s-access-tit   le a-text-normal")] / text()'))   24

我是否需要更改任何设置?

2 个答案:

答案 0 :(得分:0)

我认为是因为你的收益在字典中有一些语法错误。

更改此

yield {'product_name'product_name,'product_price': product_price}

yield {'product_name':product_name,'product_price': product_price}

答案 1 :(得分:0)

要以CSV格式生成结果,您需要使用输出选项

运行抓取工具
scrapy crawl -o results.csv spidername 

仅当您激活输出时,结果才会发送到文件。否则,它们将由您的piplelines处理。如果您没有通过管道将它们保存在任何地方,那么它们将只在终端的控制台日志中