互联网数据采集的应用场景非常广泛,一般用于 情报收集、舆情分析、竞争对手分析、学术研究、市场分析、用户口碑监测 ,在数据采集的过程中大多数网站都是以标题,时间,摘要,作者,来源,正文等形式展现,但是会遇到千千万万种不同结构的网页,开发者不可能对每种不同的网页格式逐一编写代码解析,那样的话,太耗时耗力了,而且维护起来也很不方便。
所以,我们会想到采用一种算法对90%以上的网页内容解析,能达到一劳永逸的效果。
这也是一个较高难度的技术实现方式。
在采集之前会对整个站点或采集目标做一个画像,这个画像是自动生成的,
画像主要提取这几个方面的特征:站点首页、站点栏目、列表页面、详情页面、URL特征。
今天先来说说对 网页内容自动识别与提取的实现,对导航栏、列表页自动识别的实现 将在其他文章内容中介绍。
识别详情页的正文内容 主要是通过文章的标点符号和文章文本的蜜度,以及html < > 符号的蜜度,主要根据这3点进行判断正文的区域。
但是,遇到详情页面里面是图片,图片里面有文字,这张图片就是正文内容,那么就需要通过 OCR 文字识别以及的标签判断,才能准确的识别。
正文抽取的解决方案主要思路:
1、对所有新闻网站的构建内容特征库。其实也很快,估计一个网站用时20分钟就可以了。200主流媒体,也花不了1天的时间,而且准确100%!
2、想研究一个放之四海而皆准的方案。参考知网一篇文章《基于文本及符号密度的网页正文提取方法》,以及一些相关机器学习等思路的算法。但是都会存在一些先天的痼疾。本项目也是如此。如果找一篇正文内容只有1行字,或者是图片多于文字的这种网页,准确率就下降了。
在“思通舆情”项目中实践的技术框架
1.GeneralNewsExtractor (Python)
传说中这个最准,号称100%。GNE在提取今日头条、新浪,腾讯新闻等数百个中文新闻网站上效果非常出色,几乎能够达到100%的准确率。
开源项目地址:https://github.com/GeneralNewsExtractor/GeneralNewsExtractor
使用Flask框架整合GeneralNewsExtractor就可以对外提供web服务,大大增强了可扩展性。
【Java】使用Java调用Python的四种方法_FFIDEAL的博客-CSDN博客_java调用python
2.WebCollector/ContentExtractor (Java)
Java界中算是评价最高的,虽然代码更新停止在3年前。
https://gitee.com/webcollector/ContentExtractor
https://github.com/CrawlScript/WebCollector
3.HtmlSucker (Java)
HtmlSucker首页、文档和下载 - HTML 正文提取工具 - OSCHINA - 中文开源技术交流社区
作者在 WebCollector 的基础上做了二次开发,HtmlSucker是一个用来从一个网页中提取文章信息的小工具包,例如从网页中提取文章标题、作者、发布时间、 封面图以及文章正文内容。基于 jsoup 库进行 HTML 解析。
上述3种技术框架,我们已经整合成一套服务总线,目前用于思通舆情的网页正文自动识别,
面向所有网站自动识别,根据评分对应不同类型的网站采用不同的技术框架。
请关注我们发布的开源项目。
开源免费舆情监测网络监控系统: 思通舆情 是一款开源免费的舆情系统,支持本地化部署。支持对海量的舆情数据进行交叉分析和深度挖掘,为用户提供全面的舆情数据,专业的舆情分析,快速的舆情处理等服务,提升企业品牌价值和风控能力。#舆情系统#舆情监测#网络舆情#开源舆情#免费舆情#舆情分析https://gitee.com/stonedtx/yuqing
参考文献,希望对你有用
网页正文信息抽取新方法-大连理工大学
能提取HTML网页正文的网站,智能提取网页正文新方法
网页正文提取工具Readability
基于正文特征及网页结构的主题网页信息抽取
解析HTML页面中的结构化数据,一种网页数据结构化提取的方法与流程