java爬虫设计

浏览: 1736

1.爬虫系统设计

1.1总体概览

Clipboard Image.png

1.2模块划分

Clipboard Image.png

1.2.1数据爬取模块

   Clipboard Image.pngHttpClient进行html页面下载


   Clipboard Image.pngHtmlCleaner+ Xpath

                                  Jsoup

                                  正则表达式


 Clipboard Image.png  JDBC接入方式

                                   mongo-java-driver接入方式

                                   HDFS/HbaseAPI 接入方式

1.2.2 数据存储模块

JDBC接入存储到传统数据库,如PG,GP

mongo-java-driver接入存储到MongoDB

HDFS/Hbase API 接入存储数据到Hadoop,根据业务应用情况,选择对应的数据接入方式和存储。

1.2.3 数据查询模块

全文检索

后台接口

第三方查询工具

1.2.4管理与监控模块

Clipboard Image.pngredis创建URL仓库,队列优先级调度

Clipboard Image.pngGanglia、Zookeeper

Clipboard Image.png邮件提醒                                         

2.开发部署规划

   优先开发数据爬取和存储模块,数据查询和管理监控模块可选或二期开发。

2.1代码模块

spider.entity    存储实体

spider.service   爬虫接口

sipder.service.impl 

sipder.entry     执行入口

sipder.crontab   爬虫调度

sipder.solr      数据查询

sipder.mail      邮件提醒

sipder.zookeeper 爬虫监控

spider.util      公共类

2.2部署

一期单机:爬虫项目

二期集群(至少3台):

   redis集群服务,开源

    solr集群服务,开源

    zookeeper集群服务,开源

    爬虫项目

    其他软件部署:待定

3.设计难点

网站反爬策略,主要是访问用户限制,访问请求携带浏览器中相关信息;减缓爬取频率,如10s抓取1次;

网站模板变动,使用配置文件,如果模板变更,则对应更改配置项,或者将规则保存到数据库,实时更改数据库信息

网站URL抓取失败,httpclient默认的方式(失败URL重试3次);将失败URL重新加入到抓取队列,失败3次后停止抓取

频繁抓取IP被封,采用IP代理库,随机使用IP去抓取;部署多个爬虫应用;降低爬取频率

推荐 0
本文由 平常心 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册