爬虫进阶第一天

SCRAPY知识点

一、scrapy框架的组成部分

1.引擎engine:其他组件的通信桥梁,类似于Controller
2.爬虫spider:爬虫程序的开始位置且数据解析也在此。
3.调度器scheduler:所有下载任务Request都会被接收,
4.下载器Download:从引擎获取请求对象,请求数据下载。
5.数据管道Pipeline:负责解析数据之后处理,如保存到mysql等

[外链图片转存失败(img-n59QjJGM-1569306360347)(C:\Users\qy\AppData\Roaming\Typora\typora-user-images\1569287056747.png)]

二、基本的使用命令

1.创建爬虫项目:scrapy startproject 项目名
2.创建爬虫类:  scrapy genspider 爬虫名 爬虫端点的域名domain
3.启动爬虫:    scrapy crawl 爬虫名
4.启动scrapy的交互环境  scrapy shell [url]
	4.1 response 响应对象
	4.2 fetch(url|request)
	4.3 view(response)

带有信号的启动爬虫的命令,常用:

CLOSESPIDER_TIMEOUT 请求超时情况下,关闭爬虫程序

CLOSESPIDER_ITEMCOUNT 解析得到的item数量超出时,关闭爬虫程序

CLOSESPIDER_PAGECOUNT 下载并相应成功的数据超出时,关闭爬虫程序

CLOSESPIDER_ERRORCOUNT 下载且发生的异常次数超出时,关闭爬虫程序‘

scrapy crawl 爬虫名 -s CLOSESPIDER_ITEMCOUNT=10

三、请求类和响应类

3.1请求类

scrapy.Request(
	url,
	cookies,
	method,
	callback,	# 回调函数对象
	headers,	# 请求头
	meta,		# 元数据,用于向解析函数中传递数据,且代理的设置也在meta中
	priority,	# 优先级,值越大优先级越高
	dont_filter,# 是都过滤bool,为True时,表示不过滤(重复性)
)

3.2响应类

​ 所在包

scrapy.http.HtmlResponse
scrapy.http.response.HtmlResponse

响应对象的属性及方法:

- status
- encoding
- headers
- meta
- request
- body  响应数据的字节码
- text  响应数据的文本字符串


- xpath()	按xpath路径方式,选择标签元素及属性,返回ListSelector
- css()		按bs4的selector()方式,通过样式选择器来选择标签元素或属性

ListSelector或Selector对象的属性及方法

- get()
- extract()
- extract_first()

四、pipeline数据管道

4.1声明item类

scrapy.Item
  - scrapy.Field()	# 字段类

使用时,当作dict应用

item = BookItem()

item['name'] = 'disen'

4.2数据管道类

声明一个普通类,但必须声明一个处理数据的方法

class EsPipeline(object):
	def process_item(self, item, spider):
		# 数据处理
        return item		# 如果是多个管道,且当前的级别高,则必须返回item

【注】管道pipeline的优先级:值越小,优先级越高。与request中的priority的优先级刚好相反。

据处理
return item # 如果是多个管道,且当前的级别高,则必须返回item


【注】管道pipeline的优先级:值越小,优先级越高。与request中的priority的优先级刚好相反。

你可能感兴趣的:(爬虫进阶第一天)