互联网时代,网络爬虫是常规操作了,比较常见的就有像搜索引擎蜘蛛,它通过每天抓取不同网站的信息,当用户进行搜索的时候,才能够进行返回有效信息。黑洞代理下面为大家介绍爬虫要怎么设计合适。
一、爬虫系统架构图
相信接触过scrapy及其它第三方开源抓取工具应该对上面的图不会陌生,系统也是参考java一个比较出名的框架webmagic进程处理的,基于组件化进行开发:
爬虫系统通过scheduler获取待抓取任务,系统需要考虑到多种可调度的方式,这就需要设计一种可以通过配置选择不同调度模块的功能,比如来自redis的任务调度、来自MQ的任务,也可能来自文件和数据库的调度。另外从页面解析的request同样也需要丢到scheduler进行调度。
Downloader下载器,下载网页详情有多种java中api提供java.net.URL、java.net.URLConnection 以及HttpClient进行下载,然后还有诸如Https的处理等。
PageProcess页面处理器,通常情况下锁抽取的内容就需要在这边进行处理,同时可以分裂出新的链接,解析HTML可以自己定制使用JSOUP,XPATH以及json 、xml解析。
Pipeline负责抽取结果的处理,包括计算、持久化到文件、数据库等。
二、设计思路
如上图所示,一个典型的新闻网站会分两个页面进行展示,一个是列表页一个是详情页,我们要从列表页进行处理分裂出详情页,然后下载详情页进行处理提取里面的详情页。最后对提取的结果进行处理,处理的结果后面可以接入其它流程如更进一步的清洗等,最后经过持久话的内容最终可以通过业务流程处理出去。当一个业务流程抓住输入输出,然后结构化和剖析这个流程后,就会知道怎么进行设计了。
三、整体的技术选型
如上图所示,数据源种子存储在DB中,然后用redis缓存,抓取系统基于redis做调度。调度程序和爬虫主程序采用RabbitMQ(zeroMq,kafuka也可以)做解耦,然后抓取过程中可以用Redis做链接URL去重处理,然后如果网页内容多种多样可以用MongoDB 这种NoSql数据库做存储。利用其文档存储以及key 、value的优势进行非结构化的持久化,最后抓取的数据可以进一步推送到清洗程序中处理。然后处理后的数据最后存到关系型数据库Mysql中,然后通过业务逻辑处理展示到PC和手机端。
爬虫采集成为很多公司企业个人的需求,但正因为如此,反爬虫的技术也层出不穷,像时间限制、IP限制、验证码限制等等,都可能会导致爬虫无法进行,所以也出现了很多像代理IP、时间限制调整这样的方法去接触反爬虫限制,当然具体的操作方法需要你针对性的去研究。
当然了,爬虫自然少不了代理IP,如果大家有需要寻找合适的代理,可以咨询黑洞代代理的客服了解。
相关文章内容简介
1 爬虫要怎么设计运行?
互联网时代,网络爬虫是常规操作了,比较常见的就有像搜索引擎蜘蛛,它通过每天抓取不同网站的信息,当用户进行搜索的时候,才能够进行返回有效信息。黑洞代理下面为大家介绍爬虫要怎么设计合适。 一、爬虫系统架构图 相信接触过scrapy及其它第三方开源抓取工具应该对上面的图不会陌生,系统也是参考java一个比较出名的框架webmagic... [阅读全文]
最新标签
推荐阅读
31
2019-10
爬虫要怎么设计运行?
互联网时代,网络爬虫是常规操作了,比较常见的就有像搜索引擎蜘蛛,它通过每天抓取不同网站的信息,当用户进行搜索的时候,才能够进行返回有效信息。黑洞代理下面为大家介绍爬虫要怎
31
2019-10
网络爬虫为什么会出现乱码?
代理IP让爬虫变得更加方便,降低了准入门槛,让很多人也开始学习如何编写爬虫程序。在爬虫的时候,会出现很多情况,黑洞代理跟大家分享当你的爬虫出现乱码如何解决。
31
2019-10
Urllib库怎么使用?
用pyhton来进行爬虫是很多爬虫工作者的选择,大数据在各行各业都发挥着作用,企业也对数据分析给予更多的关注,黑洞代理今天给大家介绍Urllib库的使用。
07
2019-11
正向代理、反向代理的对比
代理服务器可以分为正向代理、反向代理,使用的时候,大家可能感受不出来具体有什么不同。但是这两种其实存在不少差异,使用场景也不一样。
热门文章
在线咨询
客户经理
公众号
关注公众号,免费领试用
大客户