您的位置: 首页 > 新闻资讯 > 正文

爬虫要怎么设计运行?

发布时间:2019-10-31 15:19:27 来源:

互联网时代,网络爬虫是常规操作了,比较常见的就有像搜索引擎蜘蛛,它通过每天抓取不同网站的信息,当用户进行搜索的时候,才能够进行返回有效信息。黑洞代理下面为大家介绍爬虫要怎么设计合适。

一、爬虫系统架构图

爬虫要怎么设计运行?


相信接触过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... [阅读全文]

最新标签