scrapy生成excel工具(python3)

背景:自己写的简单爬取电影种子的爬虫,数据存储到Excel

版本:python3

IDE:pycharm

环境:windows10

项目:scrapy爬虫

注:如使用,请自行修改,谢谢

 

# -*- coding: utf-8 -*-
import xlwt
import xlrd


class ExcelPrintPipeline(object):
    def __init__(self):
        self.f = xlwt.Workbook()  # 创建工作薄
        self.sheet1 = self.f.add_sheet(u'种子资源', cell_overwrite_ok=True)
        self.rowsTitle = [u'标题', u'影片名称', u'导演', u'影片演员', u'语言', u'影片类型', u'影片地区', u'更新时间', u'影片状态', u'上映日期', u'剧情介绍', u'影片地址']  # 创建标题
        for i in range(0, len(self.rowsTitle)):
            # 最后一个参数设置样式
            self.sheet1.write(0, i, self.rowsTitle[i], self.set_style('Times new Roman', 220, True))
        # Excel保存位置
        self.f.save('C:/torrent_movie.xls')

    def open_spider(self, spider):
        print("开始输出xlsx文件")

    def process_item(self, item, spider):
        data = xlrd.open_workbook('C:/torrent_movie.xls')  # 打开Excel文件
        table = data.sheets()[0]  # 通过索引顺序获取table,因为初始化时只创建了一个table,因此索引值为0
        rowCount = table.nrows  # 获取行数   ,下次从这一行开始
        data = []
        # 拼装成一个列表
        # data.append(rowCount + m)  # 为每条添加序号
        data.append(item['torrent_title'])
        data.append(item["torrent_name"])
        data.append(item["torrent_director"])
        data.append(item["torrent_actor"])
        data.append(item['torrent_language'])
        data.append(item["torrent_type"])
        data.append(item["torrent_region"])
        data.append(item["torrent_update_time"])
        data.append(item['torrent_status'])
        data.append(item["torrent_show_time"])
        data.append(item["torrent_introduction"])
        data.append(item["torrent_url"])

        for i in range(len(data)):
            self.sheet1.write(rowCount, i, data[i])  # 写入数据到execl中
        self.f.save('C:/torrent_movie.xls')
        return item

    def close_spider(self, spider):
        self.f.save('C:/torrent_movie.xls')
        print("结束输出xlsx文件")

    #该函数设置字体样式
    def set_style(self,name, height, bold=False):
        style = xlwt.XFStyle()  # 初始化样式
        font = xlwt.Font()  # 为样式创建字体
        font.name = name
        font.bold = bold
        font.colour_index = 2
        font.height = height
        style.font = font
        return style

 

posted @ 2019-01-15 22:25  me-ht  阅读(1056)  评论(0编辑  收藏  举报