scrapy存入excel时,excel文件被反复擦除重写。文件大小始终不超过100k,请问这种情况改如何解决

新手上路,请多包涵

怀疑是每次都在新建文件,具体代码如下

from openpyxl import Workbook

class ExcelPipline(object):

def __init__(self):
    # 类实例化
    self.wbook = Workbook()
    # 激活工作表
    self.wsheet = self.wbook.active
    #设置表头
    self.wsheet.append(['省份','城市','小区名字','是否开盘','销售电话','每平米价格',
                    '房屋卖点','几居室','面积','地址','房天下详情url'])

def process_item(self, item, spider):
    if item.collection == 'newhouseitem':
        # 把数据的每一项整理出来
        data = [item['province'],item['city'],item['house_name'],item['sale'],item['phone_num'],item['price'],
                item['tags'],item['rooms'],item['area'],item['address'],item['origin_url']]
        # 将数据以行的形式添加到xlsx
        self.wsheet.append(data)
        #自定义文件位置、标题
        self.wbook.save('F:\\newhouseitem.xlsx')
    return item
阅读 3.7k
2 个回答
✓ 已被采纳新手上路,请多包涵

最终决定将数据存为.csv文件,通过wps另存为.xlsx

你这种写法理论上是没问题的。

Pipeline的__init__在整个爬虫生命周期中,只会执行一次。每次处理item,然后保存。

首先,确保你的item有返回值。在process_item中打印下日志看下。

然后,换一种方式。

# 去掉__init__中内容
def process_item(self, item, spider):
    if item.collection == 'newhouseitem':
        wbook = load_workbook('F:\\newhouseitem.xlsx')
        # ...
        
        # 把数据的每一项整理出来
        data = [item['province'],item['city'],item['house_name'],item['sale'],item['phone_num'],item['price'],
                item['tags'],item['rooms'],item['area'],item['address'],item['origin_url']]
        # 将数据以行的形式添加到xlsx
        self.wsheet.append(data)
        #自定义文件位置、标题
        self.wbook.save('F:\\newhouseitem.xlsx')
    return item

最后,你用数据库啥的来存数据吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题