帮酷LOGO
0 0 评论
  • 显示原文与译文双语对照的内容
文章标签:AUTO  ext  提取  Extra  DOC  
Automatically extract body content (and other cool stuff) from an html document

  • 源代码名称:node-unfluff
  • 源代码网址:http://www.github.com/ageitgey/node-unfluff
  • node-unfluff源代码文档
  • node-unfluff源代码下载
  • Git URL:
    git://www.github.com/ageitgey/node-unfluff.git
  • Git Clone代码到本地:
    git clone http://www.github.com/ageitgey/node-unfluff
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/ageitgey/node-unfluff
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
  • unfluff

    Node.js的自动网页内容提取器 !

    Build Status

    自动从类似这样的网页中获取主文本:

    
    extractor = require('unfluff');
    
    
    data = extractor(my_html_data);
    
    
    console.log(data.text);
    
    
    
    

    换句话说,它将网页变成无聊的纯文本/json数据:

    这可能对以下情况有用:

    • 编写自己的Instapaper克隆
    • 从网页中轻松构建ML数据集
    • 从控制台读取你喜爱的文章?

    请不要将这里用于:

    • 窃取其他人的网页
    • 创建包含其他网站被盗内容的垃圾垃圾网站
    • a jerk

    致谢/感谢

    这个库主要基于 python-gooseGrangier,它是基于Gravity的Gravity Gravity Gravity Gravity Gravity。 但是,它不是一个确切的端口,因这里在某些页面上可能会有不同的行为。 如果你正在寻找 python 或者 Scala/Java/JVM 解决方案,请查看这些库 !

    安装

    要安装命令行 unfluff 实用程序:

    
    npm install -g unfluff
    
    
    
    

    要安装 unfluff 模块以便在你的node.js 项目中使用:

    
    npm install --save unfluff
    
    
    
    

    用法

    你可以在 node 中使用 unfluff,也可以在 命令行 上使用 !

    提取的数据元素

    unfluff 将尝试从网页抓取的内容如下:

    • title - 文档标题( 从 <标题> 标记中)
    • softTitle - 具有较少截断的title的版本
    • date - 文档日期的发布
    • copyright - 单据行的版权,如果存在的话
    • author - 文档的作者
    • publisher - 文档的发布者( 网站名称)
    • text - 文档的主要文本,丢弃了所有的垃圾信息
    • image - 文档的主图像( facebook,等等 所使用的内容)
    • videos - 嵌入在文章中的视频的array。 每个视频都有 src,宽度和高度。
    • tags - 通过检查 <相关> 标签或者查看 href url可以找到的任何标签或者关键字。
    • canonicalLink 文件的规范 url ( 如果有的话)。
    • lang - 文档的语言,由你检测或者提供。
    • description - 文档的描述,从 <元> 标记
    • favicon 文档图标标记的的url。
    • links - 文章文本中嵌入的链接的array。 ( 每个文本的文本和 href )

    这是作为简单json对象返回的。

    命令行 接口

    你可以将网页传递给 unfluff,它会尝试解析出有趣的比特。

    你可以传递文件名:

    
    unfluff my_file.html
    
    
    
    

    或者,你可以将它的插入:

    
    curl -s"http://somesite.com/page" | unfluff
    
    
    
    

    你可以很容易地将这些与其他unix命令联系起来,。 例如你可以下载网页,解析它,然后使用 将它的打印到正文文本。

    
    curl -s"http://www.polygon.com/2014/6/26/5842180/shovel-knight-review-pc-3ds-wii-u" | unfluff | jq -r. text
    
    
    
    

    这里是如何在文章中找到最常见的10个词:

    
    curl -s"http://www.polygon.com/2014/6/26/5842180/shovel-knight-review-pc-3ds-wii-u" | unfluff | tr -c '[:alnum:]' '[n*]' | sort | uniq -c | sort -nr | head -10
    
    
    
    

    模块接口

    extractor(html, language)

    html: 要解析的html

    语言( 可选): 文档语言代码的两个字母。 这将尽可以能自动检测到,但是可以能存在你想要覆盖它的情况。

    提取算法很大程度上取决于语言,因这里如果语言设置不正确,则可以能无法工作。

    extractor =require('unfluff');
    data =extractor(my_html_data);

    或者自己提供语言代码:

    extractor =require('unfluff');
    data =extractor(my_html_data, 'en');

    data 将是一个类似于下面这样的json对象:

    {
     "title": "Shovel Knight review",
     "softTitle": "Shovel Knight review: rewrite history",
     "date": "2014-06-26T13:00:03Z",
     "copyright": "2016 Vox Media Inc Designed in house",
     "author": [
     "Griffin McElroy" ],
     "publisher": "Polygon",
     "text": "Shovel Knight is inspired by the past in all the right ways - but it's far from stuck in it. [.. snip.. ]",
     "image": "http://cdn2.vox-cdn.com/uploads/chorus_image/image/34834129/jellyfish_hero.0_cinema_1280.0.png", 
     "tags": [],
     "videos": [],
     "canonicalLink": "http://www.polygon.com/2014/6/26/5842180/shovel-knight-review-pc-3ds-wii-u",
     "lang": "en",
     "description": "Shovel Knight is inspired by the past in all the right ways - but it's far from stuck in it.",
     "favicon": "http://cdn1.vox-cdn.com/community_logos/42931/favicon.ico",
     "links": [
     { "text": "Six Thirty", "href": "http://www.sixthirty.co/" }
     ]
    }
    extractor.lazy(html, language)

    extractor(html, language)的惰性版本。

    文本提取算法在大型文档中可能会有些慢。 如果只需要访问 title 或者 image 之类的元素,可以使用lazy提取器在不运行完整处理管道的情况下更快地获取它们。

    这样就返回一个象正则提取器,除了所有字段被函数替换,并且只在调用这些函数时完成。

    extractor =require('unfluff');
    data =extractor.lazy(my_html_data, 'en');// Access whichever data elements you need directly.console.log(data.title());console.log(data.softTitle());console.log(data.date());console.log(data.copyright());console.log(data.author());console.log(data.publisher());console.log(data.text());console.log(data.image());console.log(data.tags());console.log(data.videos());console.log(data.canonicalLink());console.log(data.lang());console.log(data.description());console.log(data.favicon());

    这些数据元素中的一些需要计算html文档的中间表示。 所有的东西都被缓存所以查找多个数据元素和查找它们应该尽可能快。

    演示

    尝试 unfluff 最简单的方法是安装它:

    
    $ npm install -g unfluff
    
    
    $ curl -s"http://www.cnn.com/2014/07/07/world/americas/mexico-earthquake/index.html" | unfluff
    
    
    
    

    但是,如果你不能麻烦,你可以查看获取文本文件。 它是一个由 Andy网站,使用。 你发送一封带有url的电子邮件,它用那个网址的清理内容发送回来。 它应该能让你很好地了解 unfluff 如何处理不同的url。

    什么坏了

    • 语言以外的语言分析网页的测试很差,现在可以能是不正常的。
    • 这绝对不能用于像 Chinese/Arabic/Korean/etc 这样的语言,需要更智能的词汇标记。
    • 这只在有限的网页上进行了测试。 有很多隐藏在 Bug 中的网页还没有被测试过。


    文章标签:ext  AUTO  DOC  Extra  提取  

    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语