WebCollector 网页正文提取算法(ContentExtractor)

来源:互联网 发布:通讯网络与设备是什么 编辑:程序博客网 时间:2024/06/08 11:19

WebCollector自2.10版起加入新闻网页正文自动提取功能(与hfut-dmic的ContentExtractor项目合并)。

WebCollector的正文抽取API都被封装为ContentExtractor类的静态方法。
可以抽取结构化新闻,也可以只抽取网页的正文(或正文所在Element)。

正文抽取效果指标 :

  • 比赛数据集CleanEval P=93.79% R=86.02% F=86.72%
  • 常见新闻网站数据集 P=97.87% R=94.26% F=95.33%
  • 算法无视语种,适用于各种语种的网页

标题抽取和日期抽取使用简单启发式算法,并没有像正文抽取算法一样在标准数据集上测试。

源码可在https://github.com/CrawlScript/WebCollector中下载,也可在https://github.com/CrawlScript/WebCollector中下载webcollector-version-bin.zip,解压后导入所有jar包。

需要了解的两个类 :

  • ContentExtractor : 封装了正文抽取算法和正文抽取的API,正文抽取API都被封装为ContentExtractor类的静态方法
  • News : 结构化新闻对应的模型

DEMO(TutorialContentExtractor.java)如下 :

import cn.edu.hfut.dmic.contentextractor.ContentExtractor;import cn.edu.hfut.dmic.contentextractor.News;import cn.edu.hfut.dmic.webcollector.net.HttpRequest;/** * 本教程演示了从WebCollector 2.10起添加的新闻网页正文自动提取功能 * * @author hu */public class TutorialContentExtractor {    /*输入HTML,输出制定网页结构化信息*/    public static void demo1() throws Exception {        String url = "http://www.huxiu.com/article/121959/1.html";        HttpRequest request = new HttpRequest(url);        String html = request.getResponse().getHtmlByCharsetDetect();        News news = ContentExtractor.getNewsByHtml(html, url);        System.out.println(news);    }    /*输入URL,输出制定网页结构化信息*/    public static void demo2() throws Exception {        String url = "http://www.huxiu.com/article/121959/1.html";        News news = ContentExtractor.getNewsByUrl(url);        System.out.println(news);    }    /*输入HTML,输出制定网页的正文*/    public static void demo3() throws Exception {        String url = "http://www.huxiu.com/article/121959/1.html";        HttpRequest request = new HttpRequest(url);        String html = request.getResponse().getHtmlByCharsetDetect();        String content = ContentExtractor.getContentByHtml(html, url);        System.out.println(content);        //也可抽取网页正文所在的Element        //Element contentElement = ContentExtractor.getContentElementByHtml(html, url);        //System.out.println(contentElement);    }    /*输入URL,输出制定网页的正文*/    public static void demo4() throws Exception {        String url = "http://www.huxiu.com/article/121959/1.html";        String content = ContentExtractor.getContentByUrl(url);        System.out.println(content);        //也可抽取网页正文所在的Element        //Element contentElement = ContentExtractor.getContentElementByUrl(url);        //System.out.println(contentElement);    }    public static void main(String[] args) throws Exception {        demo1();        //demo2();        //demo3();        //demo4();    }}

想了解基于机器学习的网页正文提取算法,可以参考博客《网页抽取技术和算法》。

0 0
原创粉丝点击