使用scrapy框架爬取名句,在这里只爬取的了名句和出处两个字段。具体解析如下:
items.py 用来存放爬虫爬取下来的数据模型,代码如下:
import scrapy
class QsbkItem(scrapy.Item):
content = scrapy.Field()
auth = scrapy.Field()
piplines.py 将items的模型存储到json格式的文件中,有两种方法JsonItemExporter和JsonLinesExporter
1.JsonItemExporter,这个是每次把数据添加到内存中,最后统一写入到磁盘中,好处是,存储的数据是一个满足json规则的数据,坏处是如果数据量比较大,会比较的耗费内存
2.JsonLinesItemExporter这个是每次调用export_item的时候就把这个数据存储到硬盘中,坏处是每一个字典是一行,整个文件是一个满足json格式的文件,好处是每次从处理数据的时候就直接存储到了硬盘中,这样不会对内存造成压力,数据比较安全
# 数据量多的时候写入,按行写入
from scrapy.exporters import JsonLinesItemExporter
class QsbkPipeline(object):
def __init__(self):
self.fp = open('mj.json', 'wb')
self.exporter = JsonLinesItemExporter(self.fp, ensure_ascii=False, encoding="utf-8")
def open_spider(self, spider):