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
scrapy.Request(
url,
cookies,
method,
callback, # 回调函数对象
headers, # 请求头
meta, # 元数据,用于向解析函数中传递数据,且代理的设置也在meta中
priority, # 优先级,值越大优先级越高
dont_filter,# 是都过滤bool,为True时,表示不过滤(重复性)
)
所在包
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()
scrapy.Item
- scrapy.Field() # 字段类
使用时,当作dict应用
item = BookItem()
item['name'] = 'disen'
声明一个普通类,但必须声明一个处理数据的方法
class EsPipeline(object):
def process_item(self, item, spider):
# 数据处理
return item # 如果是多个管道,且当前的级别高,则必须返回item
【注】管道pipeline的优先级:值越小,优先级越高。与request中的priority的优先级刚好相反。
据处理
return item # 如果是多个管道,且当前的级别高,则必须返回item
【注】管道pipeline的优先级:值越小,优先级越高。与request中的priority的优先级刚好相反。