Pocket 中从网页中识别出正文的技术叫做什么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
KyL
V2EX    程序员

Pocket 中从网页中识别出正文的技术叫做什么?

  •  1
     
  •   KyL 2015-03-10 12:45:11 +08:00 5915 次点击
    这是一个创建于 3869 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果你用过 Pocket getpocket.com,那么当你添加一个网页后,点击进去,Pocket会为你生成一个包含正文的阅读界面。那么这个从各种网站杂乱的html中抽出正文的功能是如何实现的呢,有没有什么开源的第三方库呢?貌似Safari中的阅读列表也有类似的生成正文的功能。

    17 条回复    2017-07-24 15:22:34 +08:00
    ryanking8215
        1
    ryanking8215  
       2015-03-10 12:49:39 +08:00
    会不会把样式都去掉了,或者是自己的样式。
    raptium
        2
    raptium  
       2015-03-10 12:56:33 +08:00
    印象中最早实现这个功能的东西叫 readability
    multiple1902
        3
    multiple1902  
       2015-03-10 12:57:08 +08:00
    Shuyi Zheng, Ruihua Song, and Ji-Rong Wen. Template-Independent News Extraction Based on Visual Consistency. In the Proceedings of AAAI 2007, 2007
    http://www.aaai.org/Papers/AAAI/2007/AAAI07-239.pdf
    KyL
        4
    KyL  
    OP
       2015-03-10 12:57:39 +08:00
    @ryanking8215 但是一个原始的网页中除了正文,还有其他的文本,包括导航,广告,一些说明文字,评论等等。仅仅去掉样式并不能解决这些多余的文本吧。
    h4x3rotab
        5
    h4x3rotab  
       2015-03-10 13:00:50 +08:00
    @multiple1902 正解,苹果的阅读器用的是神经网络实现的
    jinchun
        7
    jinchun  
       2015-03-10 13:06:35 +08:00
    网站DOM结构越接近标准越好折腾。。
    iiduce
        8
    iiduce  
       2015-03-10 13:06:53 +08:00
    /t/10934 这里有干货
    fourj
        9
    fourj  
       2015-03-10 14:48:59 +08:00
    @ryanking8215 感觉会是去css & style,保留tag,增加自己的样式。

    实现正文提取,比较困难的是找到正文,和去掉噪音内容,都需要不少策略~
    推荐个开源项目: https://code.google.com/p/boilerpipe/
    babyname
        10
    babyname  
       2015-03-10 14:51:29 +08:00
    内容萃取
    metrue
        11
    metrue  
       2015-03-10 14:53:39 +08:00
    最近也开始这样做这样子的项目,目前使用的方法也只是去掉样式,留下tag方式,坐等更好的解决方案。
    laoyuan
        12
    laoyuan  
       2015-03-10 16:02:52 +08:00
    不行就弄个网页做黑盒
    zj299792458
        13
    zj299792458  
       2015-03-10 16:20:51 +08:00 via iPhone
    html的<p>不就是正文?
    JoeShu
        14
    JoeShu  
       2015-03-10 17:07:12 +08:00   1
    据我作爬虫的经验,提供几个思路
    1. 基于网站的模板,对于某个具体的网站上的页面, 正文部分在页面上的位置一般都比较固定的,根据xpath可以很容易提取出来。缺点是需要和服务端通信,而且创建模板需要人工的干预。
    2. 一般阅读的正文都有一定的特征,比如含有标题,正文一般是整个页面最长的,包含很多特征标签(如<p>等), js代码很少等等,根据这些特征可以计算出页面上正文部分的位置。好处是可以离线处理,缺点是识别率可能稍低。

    实际应用很可能是多种方式的叠加。
    alsotang
        15
    alsotang  
       2015-03-10 18:34:36 +08:00
    @zj299792458 印象中 div 里面才是
    KyL
        16
    KyL  
    OP
       2015-03-11 21:17:45 +08:00
    sundyli
        17
    sundyli  
       2017-07-24 15:22:34 +08:00
    html2article 算法, 可以基于文本密度实现, 我撸了一个 https://github.com/sundy-li/html2article
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1460 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 16:27 PVG 00:27 LAX 09:27 JFK 12:27
    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