Q:印象笔记剪藏的只保持网页正文的功能是怎么实现的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
alexapollo
V2EX    程序员

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

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

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

    第 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
    PRO
       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
    orcusfox
        6
    orcusfox  
       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
    PRO
       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
    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     Solana     1056 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:26 PVG 02:26 LAX 11:26 JFK 14:26
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86