我对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
我是否需要更改任何设置?
答案 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处理。如果您没有通过管道将它们保存在任何地方,那么它们将只在终端的控制台日志中