抓取数据存储到Excel
有两种方法
一、修改启动命令
Scrapy默认是可以保存为csv的,可以用excel打开,使用
scrapy crawl spider_name -o data.csv -s FEED_EXPORT_ENCODING='utf-8'
# -o 输出位置以及文件名
# -s 防止发生编码问题
但csv格式有诸多不便,比如中文编码问题,比如说逗号分隔用Excel打开时会出现很多问题
二、使用Pipeline
from openpyxl import Workbook
class DoubanPipeline(object):
def __init__(self):
self.wb = Workbook() # 类实例化
self.ws = self.wb.active # 激活工作表
self.ws.append(['comment_id', 'created_time', 'content', 'subject_id', 'author_id', 'author', 'useful_count', 'stars']) # 添加表头
def process_item(self, item, spider):
data = [item["comment_id"],item["created_time"],item["content"],item["subject_id"],item["author_id"],item["author"],item["useful_count"],item["stars"]]
self.ws.append(data) # 将数据以行的形式添加到工作表中
self.wb.save('Earth.xlsx') # 保存
return item
在存储Excel中,如果确认数据量较小,不会出错的情况下,可以将保存那步放到close_spider()方法中,这样就不用频繁的保存。
def close_spider(self,spider):
self.wb.save('Earth.xlsx')
但如果一旦爬虫非正常终止,则不会保存excel。不如上面那种安全。