1. Scrapy介绍
Scrapy是⼀个为了爬取⽹站数据,提取结构性数据⽽编写的应⽤框架,我们只需要实现少量的代码,就能够快速的抓取。
Scrapy使⽤了Twisted异步⽹络框架,可以加快我们的下载速度
http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html
异步:调⽤在发出之后,这个调⽤就直接返回,不管有⽆结果。
⾮阻塞:关注的是程序在等待调⽤结果时的状态,指在不能⽴刻得到结果之前,该调⽤不会阻塞当前线程
2. Scrapy⼯作流程
- 爬虫的几种工作模式:
- 另⼀种爬⾍⽅式
Scrapy⼯作流程
Scrapy engine(引擎) | 总指挥:负责数据和信号的在不同模块间的传递 | scrapy已经实现 |
---|---|---|
Scheduler(调度器) | ⼀个队列,存放引擎发过来的request请求 | scrapy已经实现 |
Downloader(下载器) | 下载把引擎发过来的requests请求,并返回给引擎 | scrapy已经实现 |
Spider(爬⾍) | 处理引擎发来的response,提取数据,提取url,并交给引擎 | 需要⼿写 |
Item Pipline(管道) | 处理引擎传过来的数据,⽐如存储 | 需要⼿写 |
Downloader Middlewares(下载中间件) | 可以⾃定义的下载扩展,⽐如设置代理 | ⼀般不⽤⼿写 |
Spider Middlewares(中间件) | 可以⾃定义requests请求和进⾏response过滤 | ⼀般不⽤⼿写 |
3. Scrapy⼊⻔
1 创建⼀个scrapy项⽬
scrapy startproject mySpider
2 ⽣成⼀个爬⾍
scrapy genspider demo “demo.cn”
3 提取数据
完善spider 使⽤xpath等
4 保存数据
pipeline中保存数据
- 在命令中运⾏爬⾍
scrapy crawl qb # qb爬⾍的名字
- 在pycharm中运⾏爬⾍
from scrapy import cmdline
cmdline.execute("scrapy crawl qb".split())
4. pipline使⽤
从pipeline的字典形可以看出来,pipeline可以有多个,⽽且确实pipeline能够定义多个。
为什么需要多个pipeline:
- 可能会有多个spider,不同的pipeline处理不同的item的内容
- ⼀个spider的内容可以要做不同的操作,⽐如存⼊不同的数据库中
注意:
- pipeline的权重越⼩优先级越⾼
- pipeline中process_item⽅法名不能修改为其他的名称
总结:
1.scrap有的介绍:
- 异步网络框架Twisted闭包实现的
- 爬虫的几种工作模式
- 安装方式 pip install scrapy
2.scrapy的工作流程
- 引擎
- 调度器
- 中间件
- item pipline
- spider
3.scrapy 入门
- 创建一个项目 scrapy startproject myspider
- 生成一个爬虫 scrapy genspider demo xx.com
- 提取数据 xpath
- 保存数据 pipline中 保存数据
- 运行爬虫项目 a . 先创建一个py文件 b. 写入以下代码
-
from scrapy import cmdline
cmdline.execute(“scrapy crawl qb”.split())