【发布时间】:2020-03-12 00:36:38
【问题描述】:
我正在通过 Scrapy 抓取亚马逊并尝试将产品的价格和名称导出到 csv 文件。当我这样做时,Scrapy 会将这些项目附加到一个列表中,并且 csv 的每一行都是该页面的产品列表(同样适用于价格列)。我希望将每个项目及其各自的价格打印到 CSV 文件中自己的行中。下面是我的抓取代码。
class ScrapeSpider(scrapy.Spider):
name = 'scrape'
start_urls = ['https://www.amazon.com/s?i=aps&k=laptop&ref=nb_sb_noss_1&url=search-alias%3Daps']
def parse(self, response):
item = AmazonItem()
name = '\n'.join(response.css('.a-text-normal.a-color-base.a-size-medium').css('::text').extract())
price = '\n'.join(response.css('.a-offscreen').css('::text').extract())
item['name'] = name
item['price'] = price
yield item
for next_page in response.css('.a-pagination .a-last a'):
yield response.follow(next_page, self.parse)
A picture of the resulting csv file
下面是在终端中运行的代码来执行抓取:
scrapy crawl scrape -o data.csv
【问题讨论】:
-
除非绝对必要,否则请不要将信息共享为图像。请参阅:meta.stackoverflow.com/questions/303812/…、idownvotedbecau.se/imageofcode、idownvotedbecau.se/imageofanexception。
-
您没有在该代码中写入 CSV 文件,我是否遗漏了什么?
-
你是。 Scrapy 通过终端中的“-o data.csv”命令写入 csv