V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
aisin
V2EX  ›  问与答

Pocket, Instapaper, readability是如何快速准确抓取某个页面正文内容的?

  •  1
     
  •   aisin · Apr 26, 2013 · 9520 views
    This topic created in 4749 days ago, the information mentioned may be changed or developed.
    很好奇Pocket, Instapaper, readability是如何准确分辨和抓取页面正文内容的?

    有的页面是3栏, 2栏, 或者其他布局, 这些稍后阅读工具是如何快速准确识别内容, 去除杂质的?
    12 replies    1970-01-01 08:00:00 +08:00
    ericFork
        1
    ericFork  
       Apr 26, 2013   ❤️ 3
    lookhi
        2
    lookhi  
       Apr 26, 2013
    一个字 猜的
    aisin
        3
    aisin  
    OP
       Apr 26, 2013
    @lookhi 这是2个字 >:)
    aisin
        4
    aisin  
    OP
       Apr 26, 2013
    @ericFork 看不懂python
    binux
        5
    binux  
       Apr 26, 2013
    查找最多p的div
    aisin
        6
    aisin  
    OP
       Apr 26, 2013
    @binux 这个不对的吧, 有很多页面正文是用 br 来换行, 不用p的
    jeeson
        7
    jeeson  
       Apr 26, 2013   ❤️ 4
    大部分网页正文提取算法都是根据开源的 Readability 算法修改的,主要是计算文本密度,以及 link 密度,评估最可能的节点,然后在扣除 评论之类的内容。算法依赖经验参数,不容易改进。这种算法确实如 lookhi 说的,“猜”测的。

    后来 Readability 改为闭源,算法在后台运行,应该有一些网页是根据数据来改进。

    Chrome 插件 Send to Kindle (by Klip.me) 的正文提取算法是另一种方法,模仿人眼的对焦过程,先在页面的可视区域找到 “种子”,然后在扩大/收缩。并且能够根据用户的高亮选择自动训练出对焦数据。但是这种方法需要网页加载渲染完毕,适合作为插件,不适合在 Server 端运行。相对来说,对焦算法算是 “推”测的

    还有一种方法,通过“同构分析”反推出网页的“生成”结构,diffbot 可能用的是这种方法。这种方法我之前做过试验,能获得结果的情况下准确度高。不过当时算法没做完,许多网站没有反推出结构。
    lookhi
        8
    lookhi  
       Apr 26, 2013   ❤️ 1
    楼上很全了
    渲染的 统称为基于视觉的

    反推结构的,基于一个假设前提,网站的页面都是基于模版出来了。
    机器在分析某个页面的时候,会去自动的找若干个看上去类似的页面,进行页面比对。
    删除类似的雷同部分,比如导航页眉页脚的,形成一个页面的框架。

    再去猜。

    More http://www.zhizhihu.com/html/y2013/4202.html
    aisin
        9
    aisin  
    OP
       Apr 26, 2013
    @jeeson
    @lookhi 非常感谢2位.

    原来Readability 开源过算法.

    不过从个人使用感觉来看, Readability 的正文提取能力是最差的, 我Readability 上的很多页面都提取不到标题. 还有更离谱的错误是无法获取整个页面 'Readability was unable to parse the Content for This Article'. 而我用pocket就从来没碰到提取不到标题的情况, 无法获取整个页面的情况也非常少见.

    很不解Readability 为什么连页面的标题都取不到, 一个页面什么都可以没有, 但必定有title标签的吧
    jeeson
        10
    jeeson  
       Apr 26, 2013   ❤️ 2
    @aisin 每种算法具体到不同网页表现不同,不好用个别网站的网页来推断一个算法的好坏

    Readability 不是简单取页面的 head->title,而是首先设法从正文中获得标题,然后再在正文中的扣除标题,避免重复。这样的好处是可以获得更准确的标题,比如 许多网站在 head->title 中加了许多网站信息。不过按理说,最坏情况下,至少可以用 head->title,不至于提取不到标题

    这些算法在提取不到的时候,会用整个网页的内容然后根据一些规则做一下过滤,获得的结果也勉强可以接受

    Readability 新版改为后台处理,有可能后台无法抓取到你的网页,所以导致抓取失败。我对他的新版本不了解

    以前比较过几个算法,总的来说 Readability 相对 Instapaper 和 Pocket 还是要更好一些,后来 Pocket 扩大规模了,可能有人手专门对提取算法做了改进了
    aisin
        11
    aisin  
    OP
       Apr 26, 2013
    @jeeson 非常感谢 了解了
    standin000
        12
    standin000  
       Dec 23, 2013
    感觉这个基于readability.com的开源产品的项目 https://github.com/luin/node-readability 比较靠谱
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   976 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 20:04 · PVG 04:04 · LAX 13:04 · JFK 16:04
    ♥ Do have faith in what you're doing.