基于Redis的爬虫平台的实现

zhouluxi 8年前
   <h2><strong>一、需求:</strong></h2>    <p>1.数据抓取:目标数据的下载、解析、入库功能。</p>    <p>2.数据服务:黑名单、灰名单等查询服务。</p>    <p>3.平台监控:平台各个模块的数据实时监控。</p>    <h2><strong>二、WEB端效果展示:</strong></h2>    <p><img src="https://simg.open-open.com/show/4c572d3231c031603ca449a2bd2ae513.png"></p>    <h2><strong>三、架构设计</strong></h2>    <p>下载器、解析器、持久器、调度器都支持独立部署,可横向拓展部署多台服务。解耦。下载器内部开启多线程下载;解析器从待解析队列取数据,分支抽链、解析;调度器和持久器都放在web工程中,项目启动时抓取任务初始化+持久器任务开启。下载器、解析器、调度器、持久器都依赖于底层基础DAO服务。</p>    <p style="text-align: center;"><img src="https://simg.open-open.com/show/987a24bf33a87cb10c0afccdf4c95647.png"></p>    <h2><strong>四、技术选型</strong></h2>    <p>1.下载器和解析器:尝试过很多种,Jsoup、Jspider、Xpath、httpclient、HtmlUnit等。基本功能都可以。Jsoup可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。Jsoup的强大选择器最终让我选择了它。</p>    <p>2.生产消费介质:这里有很多种:消息队列MQ、缓存容器redis等都可以胜任。作为一次练手,采用单台redis作为消费介质(内部串行执行),可避免多线程并发问题,数据结构为list。</p>    <p> </p>    <p>来自:http://www.cnblogs.com/dennyzhangdd/p/5941281.html</p>    <p> </p>