没有合适的资源?快使用搜索试试~ 我知道了~
第七章 构建健壮的爬虫系统讲师姓名:授课时间:共32课时,第23-28课时1 上节回顾上节课介绍了Selenium爬取网页的基本方法,同时介绍了几个案例。2 本
资源详情
资源评论
资源推荐
网络
数
据
采
集
第
七
章
构
建
健
壮
的
爬
虫
系
统
讲师姓名:
授课时间:
共32课时,第23-28课时
1
上
节
回
顾
上节课介绍了Selenium爬取网页的基本方法,同时介绍了几个案例。
2
本
节
课
程
主
要
内
容
内容列表:
本节目标
Scrapy爬虫框架基础
scrapy具体操作与应用
本节总结
课后练习
2.1
本
节
目
标
掌握Scrapy框架的构成要素
掌握Scrapy框架的工作原理
能够应用Scrapy设计网络数据采集系统
2.2 Scrapy
爬
虫
框架
基
础
这一讲,我们介绍网络爬虫框架Scrapy的基本组成、工作原理,并介绍使用Scrapy构建较为健壮的网络
爬虫应用程序的方法。
import scrapy
class QuotesSpider(scrapy.Spider):
name = 'quotes'
start_urls = [
'http://quotes.toscrape.com/tag/humor/',
]
def parse(self, response):
for quote in response.css('div.quote'):
yield {
'text': quote.css('span.text::text').get(),
'author': quote.xpath('span/small/text()').get(),
}
next_page = response.css('li.next a::attr("href")').get()
if next_page is not None:
yield response.follow(next_page, self.parse)
运
行
爬
虫
scrapy runspider quotes_spider.py -o quotes.json
得
到
结
果
2.2.3 Scrapy
特
性
从上面的例子中,我们可以看到使用Scrapy的优势:
网页请求经过调度和异步处理
意味着scrapy不需要等待某个请求结束或处理完成,就同时可以发送另一个请求或做其他的工
作。
可以构建多快速的多并发爬虫系统,并且有效控制爬虫的礼貌性。
[{
"author": "Jane Austen",
"text": "\u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably
},
{
"author": "Groucho Marx",
"text": "\u201cOutside of a dog, a book is man's best friend. Inside of a dog it's too dark to read.\u201d"
},
{
"author": "Steve Martin",
"text": "\u201cA day without sunshine is like, you know, night.\u201d"
},
...]
可以在每个请求中,设置下载延迟,限制对每个IP的并发请求数量。
可以使用正则表达式、CSS、XPATH从htmlz中获取数据。
可以使用交互式shell控制台实现交互式开发过程。
支持多种输出格式(JSON、CSV、XML)
支持将输出结果导出到多个后端系统(文件、数据库)
强大的编码能力和自动检测能力,可以用于检查外来、非标的编码。
强大的扩展性支持,可以使用信号或良好的API,实现自定义功能。
丰富的内置中间件:
cookie
会话处理
HTTP压缩、身份验证、缓存
Proxy
robots.txt
爬行深度限制
支持远程控制台
大量可重用代码。
2.2.4 Scrapy
基
本
组
成
和
工
作
原
理
。
Scrapy的主要模块有:
Scrapy Engine(
引
擎
)
负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。
Scheduler(
调
度
器
)
它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交
还给引擎。
Downloader
(
下
载
器
)
负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy
Engine(引擎),由引擎交给Spider来处理。
Spider
(
爬
虫
)
它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给
引擎,再次进入Scheduler(调度器)。
Item Pipeline(
管
道
)
它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方。以流水
线方式对Spider解析后得到的结果(Item),用户可以定义一组操作顺序,包括:清理、检验、查重、
存储到数据库等。
Downloader Middlewares
(
下
载
中
间
件
)
你可以当作是一个可以自定义扩展下载功能的组件。
Spider Middlewares
(
Spider
中
间
件
)
你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的
Responses;和从Spider出去的Requests),
下图是Scrapy的基本结构框图:
借助这一幅图,我们再介绍一下scrapy的工作原理:
Scrapy有3条数据流路径:
请
求
发
起
与
调
度
Spiders经Spider中间件向Engine发送Requests;
Engine将爬取请求交给Scheduler,完成调度。
请
求
执
行
与
响
应
Scheduler将调度后Requests交给Engine;
Engine将请求转发给Downloader;
Downloader执行下载并将响应Response对象提交给Engine;
Engine将Response对象送给Spiders,用于提取Item和跟踪Links。
剩余38页未读,继续阅读
内酷少女
- 粉丝: 16
- 资源: 302
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0