Item Pipeline
当 Item 在 Spider 中被收集之后,它将会被传递到 Item Pipeline,这些 Item Pipeline 组件按定义的顺序处理 Item。每个 Item Pipeline 都是实现了简单方法的 Python 类,比如决定此 Item 是丢弃而存储。以下是 item pipeline 的一些典型应用:
验证爬取的数据(检查 item 包含某些字段,比如说 name 字段)
查重(并丢弃)
将爬取结果保存到文件或者数据库中
编写 item pipeline
编写 item pipeline 很简单,item pipiline 组件是一个独立的 Python 类,其中 process_item()方法必须实现:
启用pipelines
为了启用Item Pipeline组件,必须将它的类添加到 settings.py文件ITEM_PIPELINES 配置,就像下面这个例子:
分配给每个类的整型值,确定了他们运行的顺序,item 按数字从低到高的顺序,通过pipeline,通常将这些数字定义在 0-1000 范围内(0-1000 随意设置,数值越低,组件的优先级越高)
spider
Spider 类定义了如何爬取某个(或某些)网站。包括了爬取的动作(例如:是否跟进链接)以及如何从网页的内容中提取结构化数据(爬取 item)。 换句话说,Spider 就是您定义爬取的动作及分析某个网页(或者是有些网页)的地方。class scrapy.Spider 是最基本的类,所有编写的爬虫必须继承这个类
主要用到的函数及调用顺序为:
__init__() : 初始化爬虫名字和 start_urls 列表
start_requests() 调用 make_requests_from url():生成 Requests 对象交给 Scrapy下载并返回
response
parse() : 解析 response,并返回 Item 或 Request(s 需指定回调函数)。Item 传给 Item pipline
持久化 , 而 Requests 交由 Scrapy 下载,并由指定的回调函数处理(默认 parse()),一直进
行循环,直到处理完所有的数据为止。
主要属性和方法
name定义 spider 名字的字符串。
例如,如果 spider 爬取 mywebsite.com ,该 spider 通常会被命名为 mywebsit
allowed_domains包含了 spider 允许爬取的域名(domain)的列表,可选。
start_urls初始 URL 元祖/列表。当没有制定特定的 URL 时,spider 将从该列表中开始进行爬取。
start_requests(self)
该方法必须返回一个可迭代对象(iterable)。该对象包含了 spider 用于爬取(默认实现是使用 start_urls 的 url)的第一个 Request。
当 spider 启动爬取并且未指定 start_urls 时,该方法被调用。
parse(self, response)当请求 url 返回网页没有指定回调函数时,默认的 Request 对象回调函数。用来处理网页返回的 response,以及生成 Item 或者 Request 对象。
log(self, message[, level, component])
使用 scrapy.log.msg() 方法记录(log)message