基于标记模板的分布式网络爬虫系统的设计与实现
发布时间:2021-02-08 15:28
网络爬虫的诞生,满足了人们快速获取指定网络信息的需求。但是传统网络爬虫需要针对不同网站定制爬虫,而开发爬虫程序具有流程多、成本高、难度大、自动化程度低等弊端,同时开发和维护网络爬虫的效率与网站新增和更变速度的悬殊差距,又增加了开发者的负担。针对这种矛盾,设计了基于标记模板的分布式网络爬虫系统。系统能够根据携带少量网页信息的爬虫模板自动生成爬虫实例,完成采集任务。系统的目标是在减轻爬虫开发难度和减少开发流程的基础上为网络舆情系统提供大量实时网络数据。系统以Scrapy框架为基础进行修改和扩展以实现分布式,主要工作包括以下几点:定义爬虫模板,系统能够根据模板描述的采集网站、采集元素、爬虫配置等要素,生成爬虫实例,执行采集任务。设计了一个基于标记的半自动化页面元素抽取算法,算法以页面的XPath以及标记信息作为特征,采用聚类策略计算生成抽取规则,实现自动抽取。实现了一个二级去重方案,将经压缩并设置有过期时间的URL缓存到内存作为一级缓存,并以键值对形式将URL持久化到磁盘形成二级去重,在保证不发生内存溢出的基础上实现增量采集的快速去重,增加了系统的稳定性。通过封装页面渲染引擎和封装浏览器内核...
【文章来源】:华中科技大学湖北省 211工程院校 985工程院校 教育部直属院校
【文章页数】:68 页
【学位级别】:硕士
【部分图文】:
板块页面链接列表DOM结构示意图
图 3-5 详情页部分 DOM 结构示意图研究发现详情页也具有非常相似的 DOM 模型结构。如图 3-5 所示,如果去除页所有的 a 标签节点,剩下的非链接文本节点都是与详情页内容相关的节点,题、发布时间、文章正文等。对于单个标签的元素如标题、作者可以直接标记进行定位元素;对于正文,由于该字段是由多个标签组合而成,需要先对其进层,然后使用聚类策略聚合出包含正文内容的节点,再对节点生成抽取规则。
Algroithm :getDetailModel(infos)begindom = buildDom(response) //构建一棵dom树xpathStructList = buildXPath(dom) //通过dom树构造每个元素的xpathStructxpathList = DeleteByTag('a') //删除所有的A标签xpathList = DeleteByContent('') //删除所有没有文本内容的标签//剩下所有的标签都是非链接的文本标签model = {}for item in infos: //遍历标记文本if item not is content:retXpath = matchByText(xpathList,item)//找出每个标记文本的XPATHmodel[item] = retXpath//正文一般由多个非文本标签组合而成tagStruct = findTagByText(xpathList,infos[content]) //找出正文所在的标签contents = getListByDepth(xpathList,tagStruct.deep)//聚合正文所在的层次contentList = calSim(contents,tagStruct) //对xpath进行聚合得出包含有标记正文的类contentList = removeOtherField(contentList,model) //删除可能包含的其他字段retXpath = getXPath(contentList) //对所有的标签生成其公共XPATHreturn modelend图 4-2 详情页抽取规则生成伪代码板块页面和详情页面的规则抽取是页面分析的重点,该分析过程只进行一次,当网站结构更变时,系统会再次调用模板分析生成规则。
【参考文献】:
期刊论文
[1]一种基于Scrapy-Redis的分布式微博数据采集方案[J]. 邓万宇,刘光达,董莹莹. 信息技术. 2018(11)
[2]一种深层网的数据采集方法[J]. 陈新,都云程,肖诗斌. 北京信息科技大学学报(自然科学版). 2018(05)
[3]N-gram模型综述[J]. 尹陈,吴敏. 计算机系统应用. 2018(10)
[4]基于Scrapy的农业网络数据爬取[J]. 李乔宇,尚明华,王富军,刘淑云. 山东农业科学. 2018(01)
[5]分布式网络爬虫框架Crawlzilla[J]. 徐海啸,董飒,李翔,于洪梅,吴旗. 电子技术与软件工程. 2017(18)
[6]爬虫技术综述[J]. 冯俐. 电脑知识与技术. 2017(27)
[7]基于Scrapy的深层网络爬虫研究[J]. 刘宇,郑成焕. 软件. 2017(07)
[8]基于Nutch的Web论坛分块采集系统[J]. 程杜新,傅魁. 图书馆学研究. 2017(07)
[9]信息爬取工具MetaSeeker的介绍及其在微博中的应用[J]. 刘丹,叶子青,周舒,唐瑶,粟妮,张璐妮. 计算机与网络. 2015(10)
[10]Bloom Filter及其在网络中的应用综述[J]. 刘元珍. 计算机应用与软件. 2013(09)
硕士论文
[1]基于Scrapy的分布式网络爬虫系统设计与实现[D]. 樊宇豪.电子科技大学 2018
本文编号:3024137
【文章来源】:华中科技大学湖北省 211工程院校 985工程院校 教育部直属院校
【文章页数】:68 页
【学位级别】:硕士
【部分图文】:
板块页面链接列表DOM结构示意图
图 3-5 详情页部分 DOM 结构示意图研究发现详情页也具有非常相似的 DOM 模型结构。如图 3-5 所示,如果去除页所有的 a 标签节点,剩下的非链接文本节点都是与详情页内容相关的节点,题、发布时间、文章正文等。对于单个标签的元素如标题、作者可以直接标记进行定位元素;对于正文,由于该字段是由多个标签组合而成,需要先对其进层,然后使用聚类策略聚合出包含正文内容的节点,再对节点生成抽取规则。
Algroithm :getDetailModel(infos)begindom = buildDom(response) //构建一棵dom树xpathStructList = buildXPath(dom) //通过dom树构造每个元素的xpathStructxpathList = DeleteByTag('a') //删除所有的A标签xpathList = DeleteByContent('') //删除所有没有文本内容的标签//剩下所有的标签都是非链接的文本标签model = {}for item in infos: //遍历标记文本if item not is content:retXpath = matchByText(xpathList,item)//找出每个标记文本的XPATHmodel[item] = retXpath//正文一般由多个非文本标签组合而成tagStruct = findTagByText(xpathList,infos[content]) //找出正文所在的标签contents = getListByDepth(xpathList,tagStruct.deep)//聚合正文所在的层次contentList = calSim(contents,tagStruct) //对xpath进行聚合得出包含有标记正文的类contentList = removeOtherField(contentList,model) //删除可能包含的其他字段retXpath = getXPath(contentList) //对所有的标签生成其公共XPATHreturn modelend图 4-2 详情页抽取规则生成伪代码板块页面和详情页面的规则抽取是页面分析的重点,该分析过程只进行一次,当网站结构更变时,系统会再次调用模板分析生成规则。
【参考文献】:
期刊论文
[1]一种基于Scrapy-Redis的分布式微博数据采集方案[J]. 邓万宇,刘光达,董莹莹. 信息技术. 2018(11)
[2]一种深层网的数据采集方法[J]. 陈新,都云程,肖诗斌. 北京信息科技大学学报(自然科学版). 2018(05)
[3]N-gram模型综述[J]. 尹陈,吴敏. 计算机系统应用. 2018(10)
[4]基于Scrapy的农业网络数据爬取[J]. 李乔宇,尚明华,王富军,刘淑云. 山东农业科学. 2018(01)
[5]分布式网络爬虫框架Crawlzilla[J]. 徐海啸,董飒,李翔,于洪梅,吴旗. 电子技术与软件工程. 2017(18)
[6]爬虫技术综述[J]. 冯俐. 电脑知识与技术. 2017(27)
[7]基于Scrapy的深层网络爬虫研究[J]. 刘宇,郑成焕. 软件. 2017(07)
[8]基于Nutch的Web论坛分块采集系统[J]. 程杜新,傅魁. 图书馆学研究. 2017(07)
[9]信息爬取工具MetaSeeker的介绍及其在微博中的应用[J]. 刘丹,叶子青,周舒,唐瑶,粟妮,张璐妮. 计算机与网络. 2015(10)
[10]Bloom Filter及其在网络中的应用综述[J]. 刘元珍. 计算机应用与软件. 2013(09)
硕士论文
[1]基于Scrapy的分布式网络爬虫系统设计与实现[D]. 樊宇豪.电子科技大学 2018
本文编号:3024137
本文链接:https://www.wllwen.com/kejilunwen/shengwushengchang/3024137.html
最近更新
教材专著