课程名称:Scrapy打造搜索引擎(分布式爬虫)
课程章节:items数据写入json文件中
主讲老师:bobby
今天学习的内容包括:items数据写入json文件中
# 自定义json文件的导出 class JsonWithEncodingPipeline: def __init__(self): # "a"——表示数据以追加的方式写入 "w"——每次写入都会抹除之前的数据 self.file = codecs.open("article.json", "a", encoding="utf-8") def process_item(self, item, spider): # 注:def process_item(self, item, spider)方法名参数必须按照此方式写,否则scrapy找不到 lines = json.dumps(dict(item), ensure_ascii=False) + "\n" self.file.write(lines) return item def spider_closed(self, spider): # 爬虫结束自动调用 self.file.close()
# 使用scrapy自带的方式导出数据 class JsonExporterPipeline: def __init__(self): # 文件打开 'wb'——表示以二进制的方式打开 self.file = open('article_exporter.json', 'wb') self.exporter = JsonItemExporter(self.file, encoding="utf-8", ensure_ascii=False) self.exporter.start_exporting() def process_item(self, item, spider): self.exporter.export_item(item) return item def spider_closed(self, spider): # 爬虫结束自动调用 self.exporter.finish_exporting() self.file.close()
3.运行截图article_exporter.json
post_node.xpath开始以后就要是相对路径——.//h2[@class='news_entry']/a/@href
1.如果写成xpath('//*') //开头的就会从整个url开头找起
2.必须写成.//