使用scrapy实现爬虫实例——继上一章Item数据封装
一、Pipeline介绍
当我们通过Spider爬取数据,通过Item收集数据后,就要对数据进行一些处理了,因为我们爬取到的数据并不一定时我们想要的最终数据,可能还需要进行数据的清洗以及验证数据的有效性。Scripy中的Pipeline组件就用于数据的处理,一个Pipeline组件就是一个包含特定接口的类,通常只负责一种功能的数据处理,在一个项目中可以同时启用多个Pipeline。
以下是Pipeline的几种典型应用:
清洗数据
验证数据的有效性
过滤掉重复数据
将数据存到数据库
二、使用Pipeline实现数据的处理——将数据写入txt文件中
pipelines.py代码:
在pipelines.py中对数据进行处理
# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
class BooksscrapyPipeline(object):
def process_item(self, item, spider):
#对数据进行处理—写入到txt文件中
with open("mybooks.txt","a",encoding="utf-8") as f:
oneStr = item["name"]+";"+item["price"]+"\n" #txt中不会自动换行
f.write(oneStr)
return item
功能释放: 由于系统对pipeline管道里面的功能是默认关闭的,我们需要将settings.py中的功能释放出来以便程序顺利执行
释放后为:
ITEM_PIPELINES = {
'booksScrapy.pipelines.BooksscrapyPipeline': 300,
}
现在可以启动start.py文件来执行项目
start.py代码为:
from scrapy import cmdline
cmdline.execute('scrapy crawl books'.split())
执行结果:
系统自动生成mybooks.txt文件,并将数据保存到其中
三、总结
本章讲了使用Pipeline对数据进行处理,先在pipelines.py中对数据进行处理,再将setting.py中的功能释放,最后执行项目。