scrapy爬虫数据导出

转换为json

1. 第一种方式——命令行

scrapy crawl dmoz -o items.json

该命令将采用 JSON 格式对爬取的数据进行序列化,生成 items.json 文件。,如果文件内出现乱码可以在后面添加FEED_EXPORT_ENCODING = 'utf-8'进行转换

2. 在pipelines.py里面编辑函数

只是简单介绍一下操作,所以拿之前写的一个练手的scrapy代码做演示,spider文件已经成型,现在主要是在pipelines里面编辑代码做存储用,存入poker_test.json文件

class Poker2Pipeline(object):

    def __init__(self):
        self.file = codecs.open('poker_test.json', 'w', encoding='utf-8')

    def process_item(self, item, spider):
        line = json.dumps(dict(item), ensure_ascii=False) + "\n"
        self.file.write(line)
        return item


    def spider_closed(self, spider):
        self.file.close()
        

poker_test.json

image.png

3. 与上面的方法异曲同工,只是换了一种思路

在写入文件时要格外注意编码的问题,这里存入poker_test2.json文件,话不多说,上代码

    def process_item(self, item, spider):
        base_dir = os.getcwd()
        filename = base_dir + '/poker_test2.json'
        # 打开json文件,向里面以dumps的方式吸入数据
        # 注意需要有一个参数ensure_ascii=False ,不然数据会直接为utf编码的方式存入比如
        # :“/xe15”
        with codecs.open(filename, 'a', encoding='utf-8') as f:
            line = json.dumps(dict(item), ensure_ascii=False) + '\n'
            f.write(line)
        return item

poker_test2

image.png

存入txt文件

这里演示存入poker.txt文件,数据什么的不要在意,主要是方法方法

    def process_item(self, item, spider):
        base_dir = os.getcwd()
        fiename = base_dir + '/poker.txt'
        with open(fiename, 'a') as f:
            f.write(item['title'] + '\n')
            f.write(item['description'] + '\n')
            # f.write(item['other'] + '\n')
        return item

poker.txt

image.png

你可能感兴趣的:(scrapy爬虫数据导出)