爬取网站的设计与实现,使用流程节点处理摘要计算、关键词计算、相似度计算、热度计算。数据经过流程计算后入库,建立倒排索引。搜索根据关键词对倒排索引表进行快速搜索。实现步骤1.基础工作:收集一些URL作为爬虫的入口。种子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表示noDelete1删除rootUrl:根网站地址deep:访问深度,深度越深,级别越低。2、基础工作:整理行业分类,设置分类关键词(后续网页行业分类进行相似度计算的依据)。行业分类表结构:`{“_id”:ObjectId(“5a9ec8b0552310b3d”),“urlId”:“io5636fbauiodf7e96bb9ij”,“topicCode”:“IT”}`urlId为行业代表urltopicCode:表示行业分类代码3。抓取网页:jsoup工具对网页内容进行分析、识别、审核(例如:是否是广告,内容是否过短),如果内容通过审核,则入库。流程的第一个节点已完成。流表结构:`{"_id":ObjectId("5aa00c0cd0c5e5df"),"flowId":"8315006ae8c03b1b648c","urlId":"d162bab5ebc467bb1f4","nodeCode":"UrlDataExtract","startFlag":"1","endFlag":"1","seqNo":1.0}`flowId:进程IDurlId:网页IDnodeCode:节点代码startFlag:进程启动标志1:启动0:未启动endFlag:结束标志0:未完成1:完成EndseqNo:流程节点序号(递增编号)网页数据表结构:`{"_id":ObjectId("5aa2adbc5c6b736"),"urlId":"9bc15a1c0e54c1f03c27","url":"www.runoob.com/angularjs-http.html","txt":"AngularJSHttp|菜鸟教程菜鸟教程-学的不仅是技术,还有梦想!首页HTMLCSSJavaScriptjQuery更多...这里省略","title":"AngularJSHttp|菜鸟教程","hots":30.0}urlId:网页IDurl:网页地址txt:网页摘要(限500字)title:标题名称hots:表示搜索热度`4.关键词抽取:网页摘要内容生成,关键词抽取(Ikanalyzer开源)。关键字存储在关键字表中。关键字表结构:`{“_id”:ObjectId(“5aa00c779cc5e88a”),“urlId”:“d162bab5edbc467bb1f4”,“keyWord”:“database”,“counts”:10.0}urlId:网页IDkeyWords:关键字描述counts:The关键字出现的次数。数据字典表:{“_id”:ObjectId(“5aa00ce99cceec5ec78”),“wordId”:“9e83bed9f04bcb”,“word”:“Network”}wordId:wordIDword:worddescription`5.倒排索引的建立:根据key对words生成倒排索引,将url对应的id存入倒排索引表中。相似度表(用于计算行业分类):`{“_id”:ObjectId(“5aa00ce5ec89”),“urlIdSeed”:“4506d40e0f3163d2”,“urlId”:werqd09if3c0f39ijnh“similar”:30.0}urlIdSeed:seedurlIdurlId:网页IDsimilar:相似度值(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:网页IDurl:URLwordId:关键字IDtitle:titlesummary:summaryhots:popularity`功能扩展1.在jar包中集成爬虫功能,并使用内存进行数据存储(HashMap),爬虫与数据中心通信,拉取种子url,爬取过程完成后,将处理后的结果推送到数据中心(通信过程采用非对称加密)2.数据中心通过消息队列减轻nosql的压力技术工具springBoot,mongodb,kafka,dubbo,job.Git后端地址:https://github.com/sijunx/mySpidergit前端地址:https://github.com/sijunx/whatsUpdemo网址:https://developer.aliyun.com/article/742083?utm_content=g_1000099483
