V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alexapollo
V2EX  ›  程序员

Q:印象笔记剪藏的只保持网页正文的功能是怎么实现的?

  •  3
     
  •   alexapollo ·
    geekan · 2015-12-08 14:34:27 +08:00 · 5393 次点击
    这是一个创建于 3061 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有人分析过吗?做得很强,基本没有错过。

    第 1 条附言  ·  2015-12-09 10:34:56 +08:00

    回答维基:
    * boilerpipe(2012~now): http://stackoverflow.com/a/10323254/2245019
    * readability(2010~now): https://github.com/kingwkb/readability
    * cx-extractor(2010~2013): https://code.google.com/p/cx-extractor/

    这是本文回复提到的主要几个。如有需要我再完善。

    21 条回复    2018-02-05 13:22:06 +08:00
    rokeyzki
        1
    rokeyzki  
       2015-12-08 14:38:31 +08:00
    相比之下,为知的网页剪藏就做的不好
    Livid
        2
    Livid  
    MOD
       2015-12-08 14:39:09 +08:00   ❤️ 2
    讲一个基本的算法思路:遍历所有的 DOM 节点(忽略部分,比如 p 和 span ,主要关注 div 和 td ),找出其中正文信息量最大的一个。
    iiduce
        3
    iiduce  
       2015-12-08 14:55:05 +08:00
    rokeyzki
        4
    rokeyzki  
       2015-12-08 14:56:29 +08:00
    icedx
        5
    icedx  
       2015-12-08 15:08:07 +08:00
    napsterwu
        6
    napsterwu  
       2015-12-08 15:09:09 +08:00
    《数学之美》
    polythene
        7
    polythene  
       2015-12-08 15:18:48 +08:00
    我用打分的方式实现了一个 python 的版本 https://github.com/polyrabbit/hacker-news-digest/tree/master/page_content_extractor 目前看来提取正文的准确率还不错
    alexapollo
        8
    alexapollo  
    OP
       2015-12-08 17:02:25 +08:00
    @Livid
    1. 广告很多时候信息量也很大,使用 adblock 来排除吗?
    2. 像这篇帖子,它可以准确抽出帖子主体,但评论实际占了大头,这种情况怎么判断“正文信息量”?
    Livid
        9
    Livid  
    MOD
       2015-12-08 17:05:21 +08:00
    @alexapollo 具体是如何做到的我也不清楚细节。但是正文的出现位置是有规律可循的,比如从顺序来说,出现在 h1 之后信息量最大的一个 div 是正文的可能性较高。
    alexapollo
        10
    alexapollo  
    OP
       2015-12-08 17:06:33 +08:00
    @rokeyzki 很有用,有 python 的版本吗
    @icedx 是你写的?
    @polythene 很有趣,晚上我看看,刚好我也在做 PDF 抽取
    @napsterwu 有看过,没说到这个吧
    fractal314
        11
    fractal314  
       2015-12-08 17:13:53 +08:00 via Android
    我也在想这个问题,好像有种算法是计算文本密度,不过我觉得计算链接数量,统计正文对应的标签应该也有效果
    knightdf
        12
    knightdf  
       2015-12-08 17:37:57 +08:00
    python 有个 dragnet
    Biwood
        14
    Biwood  
       2015-12-08 17:54:16 +08:00
    应该是根据文本量来计算的,比如现在这个页面,我点了一下剪藏,结果选中了右下角的 100offer 的广告,目测当前页面上就是这个广告元素的文本内容最丰富
    alexapollo
        15
    alexapollo  
    OP
       2015-12-08 17:55:09 +08:00
    @Biwood 我的 adblock 默认把广告过滤了,应该有这个不同
    rokeyzki
        16
    rokeyzki  
       2015-12-08 17:56:06 +08:00
    ytf
        17
    ytf  
       2015-12-08 19:19:37 +08:00
    dongoo
        18
    dongoo  
       2015-12-08 21:28:40 +08:00
    试了一下印象笔记的剪藏功能,网页正文居然是右边的广告。。。

    https://ooo.0o0.ooo/2015/12/08/5666dad9e2208.png
    SmiteChow
        19
    SmiteChow  
       2015-12-09 16:29:58 +08:00
    @dongoo 😄
    yh7gdiaYW
        20
    yh7gdiaYW  
       2015-12-09 21:08:31 +08:00
    @dongoo
    我的倒是正确提取了主题,该更新了?
    jayli517
        21
    jayli517  
       2018-02-05 13:22:06 +08:00
    @dongoo 大部分的时候印象笔记都是正常的,实在不正常的时候就只能尝试选择或者复制粘贴了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5720 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 06:08 · PVG 14:08 · LAX 23:08 · JFK 02:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.