首页
学习
活动
专区
工具
TVP
发布

小怪聊职场

专栏作者
115
文章
287436
阅读量
62
订阅数
爬虫架构 | 消息队列应用场景及ActiveMQ、RabbitMQ、RocketMQ、Kafka对比
前言:在之前的业务中,使用了Kafka和RabbitMQ两种消息队列,这篇文章来做一个总结。 消息队列中间件是分布式系统中重要的组件,主要实现异步消息,应用解耦,流量削峰及消息通讯等功能。 下面举例
黄小怪
2018-05-21
4.7K0
爬虫架构|利用Kafka处理数据推送问题(3)架构图
一、需求 1、对于所有任务产生的实时数据,通过Kafka及时推送。 2、对于新加任务需要去历史全量数据表中获取该任务已有的历史数据。 3、爬虫集群在生产数据时需要去全量数据中进行下匹配,如果不存在
黄小怪
2018-05-21
1.1K0
爬虫课堂(二十八)|Spider和CrawlSpider的源码分析
我在爬虫课堂(二十五)|使用CrawlSpider、LinkExtractors、Rule进行全站爬取章节中说将对CrawlSpider的源码进行一个讲解,这篇文章就是来还账的,你们如果觉得好请点个赞。 一、Spider源码分析 在对CrawlSpider进行源码分析之前,先对Spider源码进行一个分析。 1.1、Spider介绍及主要函数讲解 Spider类定义了如何爬取某个(或某些)网站。包括了爬取的动作(是否跟进链接)以及如何从网页的内容中提取结构化数据(提取Item)。 Spider就是定义爬取的
黄小怪
2018-05-21
1.7K0
爬虫课堂(二十七)|使用scrapy-redis框架实现分布式爬虫(2)源码分析
我们在说Scrapy之所以不支持分布式,主要是因为有三大问题没有解决: requests队列不能集中管理。 去重逻辑不能集中管理。 保持数据逻辑不能集中管理。 scrapy-redis结合了分布式数据库Redis,重写了Scrapy一些比较关键的代码,将Scrapy变成一个可以在多个主机上同时运行的分布式爬虫。 scrapy-redis是github上的一个开源项目,可以直接下载到它的源代码 。 但是scrapy-redis的官方文档写的比较简洁,没有提及其运行原理。如果想全面的理解分布式爬虫的运行原理
黄小怪
2018-05-21
1.5K0
爬虫架构|Celery+RabbitMQ快速入门(四)整合版本
前面用三篇文章断断续续写了Celery+RabbitMQ相关的文章。 爬虫架构|Celery+RabbitMQ快速入门(一)用工作任务分配的案例介绍了它们是如何配合工作的,如下图4-1所示: 图
黄小怪
2018-05-21
2K0
爬虫架构|利用Kafka处理数据推送问题(1)
如下图1-1所示,我们之前爬虫集群在采集完数据之后是直接插入到MySQL数据库中,分发服务再消费MySQL里面的数据。这样的设计会有两个主要的问题: 随着数据量越来越大,数据保存和数据存取的响应效率是
黄小怪
2018-05-21
1.8K0
爬虫课堂(二十四)|使用Splash爬取京东商城的动态信息(2)
在前面的二十三章节,我们讲解搭建了Splash的环境,这一章节通过一个实战来讲解Splash的使用。 一、分析页面的数据是否是动态加载的数据 以https://item.jd.com/260024
黄小怪
2018-05-21
1.3K0
爬虫课堂(二十五)|使用CrawlSpider、LinkExtractors、Rule进行全站爬取
在爬虫课堂(二十二)|使用LinkExtractor提取链接中讲解了LinkExtractor的使用,本章节来讲解使用CrawlSpider+LinkExtractor+Rule进行全站爬取。 一、CrawlSpider介绍 Scrapy框架中分两类爬虫,Spider类和CrawlSpider类。Spider类的使用已经讲解了很多,但是如果想爬取某个网站的全站信息的话,CrawlSpider类是个非常不错的选择。CrawlSpider继承于Spider类,CrawlSpider是爬取那些具有一定规则网站
黄小怪
2018-05-21
1.2K0
爬虫课堂(二十二)|使用LinkExtractor提取链接
在爬取一个网站时,要爬取的数据通常不全是在一个页面上,每个页面包含一部分数据以及到其他页面的链接。比如前面讲到的获取简书文章信息,在列表页只能获取到文章标题、文章URL及文章的作者名称,如果要获取文章的详细内容和文章的评论只能去到文章的详情页中获取。 获取数据的方法在前面章节中已经讲解过,当然也使用Selector获取过文章URL,那么LinkExtractor又有什么特别之处呢?为什么说LinkExtrator非常适合整站抓取?下面将对LinkExtrator做一个介绍。 一、LinkExtracto
黄小怪
2018-05-21
2.1K0
爬虫课堂(二十一)|使用FilesPipeline和ImagesPipeline下载文件和图片
在上一章节,我们学会了使用Item Pipeline处理数据,而有时候我们可能需要下载爬虫网站中的文件信息,比如图片、视频、WORD文档、PDF文档、压缩包等。 Scrapy提供了两个Item Pipeline来下载文件和图片,它们分别是FilesPipeline和ImagesPipeline。 一、FilesPipeline和ImagesPipeline 这两个管道都实现了: 避免重复下载。 可以指定下载后保存的目录。 图片也是文件,下载图片本质上也是下载文件,Images Pipeline是Fil
黄小怪
2018-05-21
9540
爬虫架构|Celery+RabbitMQ快速入门(三)
在之前两章节中,简单介绍了Celery+RabbitMQ,以及它们之间的协作过程(见文章爬虫架构|Celery+RabbitMQ快速入门(一)和爬虫架构|Celery+RabbitMQ快速入门(二))。 我们一直在说“Celery是一个基于Python开发的分布式异步消息队列,可以轻松实现任务的异步处理。它的基本工作就是管理分配任务到不同的服务器,并且取得结果”,可以得知,我们之所以使用它是看中了它的分布式,我们使用的场景也是用它做分布式爬虫架构(为什么不选用scrapy-redis?以及它们之间的区别,
黄小怪
2018-05-21
1.9K0
爬虫课堂(二十三)|使用Splash爬取动态页面(1)
在之前的章节中,爬取的都是静态页面中的信息,随着越来越多的网站开始用JS在客户端浏览器动态渲染网站,导致很多需要的数据并不能在原始的HTML中获取,再加上Scrapy本身并不提供JS渲染解析的功能,那么如何通过Scrapy爬取动态网站的数据呢?这一章节我们将学习这些知识。 通常对这类网站数据的爬取采用如下两种方法: 通过分析网站,找到对应数据的接口,模拟接口去获取需要的数据(一般也推荐这种方式,毕竟这种方式的效率最高),但是很多网站的接口隐藏的很深,或者接口的加密非常复杂,导致无法获取到它们的数据接口,此
黄小怪
2018-05-21
2.3K0
爬虫课堂(十九)|编写Spider之使用Item封装数据
在前面的章节我们学习了使用Selector提取数据,那么接下来要做的就是如何封装这些数据。以提取简书文章信息为例,我们需要获取文章标题,文章URL和文章的作者名称信息字段。应该用怎样的数据结构来封装这些零散的信息字段呢?最简单的方式就是使用Python字典(dict),如下。 jianshu = ----{ --------'title': '文章标题', --------'url': '文章URL', --------'author_name':'文章的作者' ----} 但是使用Python字典存
黄小怪
2018-05-21
9030
爬虫课堂(十六)|Scrapy框架结构及工作原理
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 也可以
黄小怪
2018-05-21
1.3K0
爬虫课堂(十七)|Scrapy爬虫开发流程
Scrapy爬虫开发流程一般包括如下步骤: 1)确定项目需求。 2)创建Scrapy项目。 3)定义页面提取的Item。 4)分析被爬对象页面。 5)编写爬取网站的Spider并提取Item
黄小怪
2018-05-21
1.3K0
爬虫课堂(十八)|编写Spider之使用Selector提取数据
上个章节说到从Spider的角度来看,爬取的运行流程如下循环: 以初始的URL初始化Request,并设置回调函数。当该Request下载完毕并返回时,将生成Response,并作为参数传给该回调函数。 在回调函数内分析返回的(网页)内容,返回Item对象或者Request或者一个包括二者的可迭代容器。返回的Request对象之后会经过Scrapy处理,下载相应的内容,并调用设置的callback函数(函数可相同)。 在回调函数内,可以使用选择器(Selectors) 来分析网页内容,并根据分析的数据生成I
黄小怪
2018-05-21
1.1K0
爬虫课堂(二十)|编写Spider之使用Item Pipeline处理数据
在前面的章节中,讲解了提取数据和使用Item封装数据,接下来讲解如何处理爬取到的数据。 在Scrapy框架中,Item Pipeline是处理数据的组件,如下图20-1所示,当Item在Spider
黄小怪
2018-05-21
5910
爬虫课堂(十四)|URL的去重方法
所谓的URL去重,就是爬虫将重复抓取的URL去除,避免多次抓取同一网页。爬虫一般会将待抓取的URL放在一个队列中,从抓取后的网页中提取到新的URL,在他们被放入队列之前,首先要确定这些新的URL没有被
黄小怪
2018-05-21
1.9K0
爬虫架构|Celery+RabbitMQ快速入门(二)
在上一篇文章爬虫架构|Celery+RabbitMQ快速入门(一)中简单介绍了Celery和RabbitMQ的使用以及它们之间的合作流程。本篇文章将继续讲解它们是如何配合工作的。 一、Celery介绍和基本使用 Celery是一个基于Python开发的分布式异步消息任务队列,它简单、灵活、可靠,是一个专注于实时处理的任务队列,同时也支持任务调度。通过它可以轻松的实现任务的异步处理,如果你的业务场景中需要用到异步任务,就可以考虑使用Celery。举几个适用场景: 1)可以在 Request-Response
黄小怪
2018-05-21
1.1K0
爬虫架构|Celery+RabbitMQ快速入门(一)
一、Celery和RabbitMQ简单介绍 Celery是一个基于Python开发的分布式异步消息队列,可以轻松实现任务的异步处理。它的基本工作就是管理分配任务到不同的服务器,并且取得结果。至于说服务器之间是如何进行通信的?这个Celery本身不能解决。 Celery在执行任务时需要一个消息中间件来接收和发送任务消息,以及存储任务结果,一般使用RabbitMQ 或 Redis,我们这里只讨论Celery+RabbitMQ,其他的组合方式读者可以查阅更多资料。 RabbitMQ是一个由Erlang语言开发的A
黄小怪
2018-05-21
1K0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档