摘要:本文大部分内容摘抄自官网的,看到巧妙之处则加了点评。,接下来的工作至此,框架已经明确选定了,接下来,我们将进一步研读的文档,研究怎样把的封装成需要的。,文档修改历史,首次发布
1,引言
在《Scrapy的架构初探》一文,我基于爬虫开发的经验对Scrapy官网文章作了点评和解读,事件驱动的异步处理架构、极强的模块化等是个绝好的框架,接着我细读了官网的《Scrapy at a glance》,更加强了我的感受:就是他了——开源Python网络爬虫项目需要一个爬虫框架,我不想重复发明轮子,只想专注于爬虫里面的提取器的生成和使用,也就是Scrapy中的Spider部分。
本文大部分内容摘抄自Scrapy官网的《Scrapy at a glance》,看到Scrapy巧妙之处则加了点评。
2,Scrapy的Spider例子在Scrapy的框架中,Spider与GooSeeker开源爬虫的提取器类似,核心特征是
Spider通常针对一个特定网站
Spider里面存了爬行入口URLs集合
Scrapy的引擎顺序拿Spider中的入口URL,构造Request对象,启动消息循环
Spider提供接口方法,把抓取下来的内容进行输出
对GooSeeker的MS谋数台和DS打数机比较了解的读者,可以把Spider想象成:MS谋数台上定义的一组抓取规则 + 会员中心的爬虫罗盘
下面我们从官网拷贝一个例子:
class StackOverflowSpider(scrapy.Spider): name = "stackoverflow" start_urls = ["http://stackoverflow.com/questions?sort=votes"] def parse(self, response): for href in response.css(".question-summary h3 a::attr(href)"): full_url = response.urljoin(href.extract()) yield scrapy.Request(full_url, callback=self.parse_question) def parse_question(self, response): yield { "title": response.css("h1 a::text").extract()[0], "votes": response.css(".question .vote-count-post::text").extract()[0], "body": response.css(".question .post-text").extract()[0], "tags": response.css(".question .post-tag::text").extract(), "link": response.url, }
看这个例子需要注意以下几点
start_urls存储入口网址列表,本例只有一个网址
parse()函数是爬到了网页后执行的,是由引擎回调的
本来到parse()就完成了,但是这个例子展示了一个两级抓取的案例,在parse()里面构造了下一级抓取的任务,生成Request对象,并登记一个回调函数
parse_question()是第二级的解析网页的函数,返回了一个JSON对象
事件驱动模式显而易见,可以构造好多Request,丢给引擎即可,不用阻塞式等待
官网文章还总结了其他很多功能特性,总之,Scrapy是一个十分完善和强大的框架。
3,接下来的工作至此,Scrapy框架已经明确选定了,接下来,我们将进一步研读Scrapy的文档,研究怎样把GooSeeker的gsExtractor封装成Scrapy需要的Spider。
4,文档修改历史2016-06-13:V1.0,首次发布
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38003.html
摘要:时间永远都过得那么快,一晃从年注册,到现在已经过去了年那些被我藏在收藏夹吃灰的文章,已经太多了,是时候把他们整理一下了。那是因为收藏夹太乱,橡皮擦给设置私密了,不收拾不好看呀。 ...
摘要:引言本文简单讲解一下的架构。没错,开源的通用提取器就是要集成到架构中,最看重的是的事件驱动的可扩展的架构。架构图就是针对特定目标网站编写的内容提取器,这是在通用网络爬虫框架中最需要定制的部分。 1. 引言 本文简单讲解一下Scrapy的架构。没错,GooSeeker开源的通用提取器gsExtractor就是要集成到Scrapy架构中,最看重的是Scrapy的事件驱动的可扩展的架构。除了...
摘要:一基础环境由于不是职业的开发者,因此环境是基于的。二安装打开命令行工具创建虚拟环境,默认情况下会创建目录,所有的虚拟环境都会产生一个子目录保存在此,里面包含基本程序文件以及库文件。 目录 基于 Python 的 Scrapy 爬虫入门:环境搭建 基于 Python 的 Scrapy 爬虫入门:页面提取 基于 Python 的 Scrapy 爬虫入门:图片处理 作为一个全栈工程师(...
摘要:解析的方法,每个初始完成下载后将被调用,调用的时候传入从每一个传回的对象来作为唯一参数,主要作用如下负责解析返回的网页数据,提取结构化数据生成生成需要下一页的请求。 Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛。 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非常...
阅读 746·2021-09-22 16:01
阅读 2041·2021-08-20 09:37
阅读 1677·2019-08-30 15:54
阅读 1671·2019-08-30 15:44
阅读 738·2019-08-28 18:23
阅读 2981·2019-08-26 12:17
阅读 990·2019-08-26 11:56
阅读 1525·2019-08-23 16:20