爬取网站,采用流程节点,用来处理摘要计算、关键字计算、相似度计算、热度计算。数据经过流程计算以后,落库,建立倒排索引。搜索根据关键词到倒排索引表可以快速搜索。
实现步骤
1.基础工作:收集一些网址,作为爬虫的入口。种子url表结构:
{
“_id” : ObjectId(“c54c4352310b3c”),
“urlId” : “io563784uiodf7e96bb9ij”,
“url” : “http://bigcat.iteye.com/blog/33”,
“deleteFlag” : “1”,
“createTime” : “20170505120012”,
“rootUrl” : “http://bigcat2013.iteye.com”,
“deep” : 1.0
} urlId为随机生成,url为种子url,deleteFlag:0表示未删除1为已删除 rootUrl:根网站地址 deep:访问深度,深度越深表示层级越低。
2.基础工作:整理行业类别,并设置类别的关键字(为后续网页行业归类做相似度计算依据)。行业类别表结构:
{
“_id” : ObjectId(“5a9ec8b0552310b3d”),
“urlId” : “io5636fbauiodf7e96bb9ij”,
“topicCode” : “IT”
} urlId为行业代表url topicCode:表示行业类别编码
3.爬取网页:jsoup工具分析、识别、审核网页的内容(例如:是否为广告、内容过短),若内容审核通过,则落库。流程的第一个节点完成。流程表结构:
{
“_id” : ObjectId(“5aa00c0cd0c5e5df”),
“flowId” : “8315006ae8c03b1b648c”,
“urlId” : “d162bab5ebc467bb1f4”,
“nodeCode” : “UrlDataExtract”,
“startFlag” : “1”,
“endFlag” : “1”,
“seqNo” : 1.0
} flowId:流程ID urlId:网页ID nodeCode:节点编码 startFlag:流程开始标记 1:已开始 0:未开始 endFlag:结束标记 0:未结束 1:已结束 seqNo:流程节点序号(升序编号)
网页数据表结构:
{
“_id” : ObjectId(“5aa2adbc5c6b736”),
“urlId” : “9bc15a1c0e54c1f03c27”,
“url” : “www.runoob.com/angularjs-http.html”,
“txt” : “AngularJS Http | 菜鸟教程 菜鸟教程 – 学的不仅是技术,更是梦想! 首页 HTMLCSS JavaScript jQuery 更多……此处省略”,
“title” : “AngularJS Http | 菜鸟教程”,
“hots” : 30.0
} urlId:网页ID url:网页地址 txt:网页摘要(限制500字以内) title:标题名称 hots:表示搜索热度
4.关键词抽取:网页摘要内容生成,关键词提取(Ikanalyzer开源)。关键词存入关键词表。关键词表结构:
{
“_id” : ObjectId(“5aa00c779cc5e88a”),
“urlId” : “d162bab5edbc467bb1f4”,
“keyWord” : “数据库”,
“counts” : 10.0
} urlId:网页ID keyWords:关键词描述 counts:关键词出现次数。数据字典表:
{
“_id” : ObjectId(“5aa00ce99cceec5ec78”),
“wordId” : “9e83bed9f04bcb”,
“word” : “网络”
} wordId:字ID word:字描述
5.倒排索引建立:根据关键词生成倒排索引,将url对应的id存入倒序索引表。相似度表(用于计算行业归类使用):
{
“_id” : ObjectId(“5aa00ce5ec89”),
“urlIdSeed” : “4506d40e0f3163d2”,
“urlId”:werqd09if3c0f39ijnh
“similar” : 30.0
} urlIdSeed:种子urlId urlId:网页ID similar:相似度数值(100分为上限),倒序索引表:
{
“_id” : ObjectId(“5aa00ced0c5ec66”),
“urlId” : “e3a9c8d4d1e6e02”,
“url” : “http://www.cnblogs.com/p/5.html/”,
“wordId” : “fa368b5b5b69e2230c”,
“title” : “Java 网络爬虫获取网页源代”,
“summary” : “过配置文件将该请求转换为网站主页地址index.php”,
“hots” : 30.0
} urlId:网页ID url:网址 wordId:关键词ID title:标题 summary:摘要 hots:热度
功能扩展
1、将爬虫功能集成在jar包里,数据存储采用内存(HashMap),爬虫和数据中心通讯,拉去种子url,爬取加工完成以后,将处理好的结果,推送给数据中心(通讯过程采用非对称加密)。
2、数据中心通过消息队列降低nosql压力。
技术工具
springBoot、mongodb、kafka、dubbo、job。
git后端地址:https://github.com/sijunx/mySpider
git前端地址:https://github.com/sijunx/whatsUp
demo网址:www.dahansoft.com