前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >readability-lxml 源码解析(四):总结

readability-lxml 源码解析(四):总结

作者头像
ApacheCN_飞龙
发布2023-10-13 09:25:58
1380
发布2023-10-13 09:25:58
举报
文章被收录于专栏:信数据得永生
代码语言:javascript
复制
score = (
      class_weight + name_weight + 
      children_comma_count + 1 + min(children_text_len //  , 3)
) / (1 - link_density) 

(1)正文元素,就是只在正文中可能出现的元素,比如<h1>~<h6> <p> <pre> <blockquote>这三个,导航栏什么的绝对不可能有,侧栏也很少出现这些东西。

(2)正文容器,就是包含正文并且不包含正文之外元素的元素。可能是<div> <section> <article> <main>,也可能是<td> <span>什么的(不常见)。我觉得可以只在这里面选,Readability 只是做了加权,并没有对标签名称做硬性限制。

(3)元素和容器的距离,Readability 限制为 2,也就是取正文元素的父节点和祖父节点。我觉得可以制定一套规则,按照距离衰减,比如衰减指数是距离分之一。

(4)ID 和类名是重要的判断依据。这些名称分为正面和负面关键词,正面加权重,负面减权重。并且每一个关键词还分为可能和确定,不过意思正好相反。确定的关键词用于加减权重,可能的关键词用于筛选。例如,可能的正面关键词的标签会保留,而可能的负面关键词标签一定会移除。

但是,在找不到候选标签的情况下,会不移除可能负面关键词再试一次。这块就显得啰嗦和麻烦。比如给确定和可能的关键词指定不同的权重,避免移除某个关键词造成的二次返工。

(5)从公式中可以看出 Readability 还考虑了文本长度,逗号个数和链接密度,用于区分导航和正文。我觉得可以考虑一下文本密度。

(6)Readability 还考虑了候选元素的兄弟也可能是候选,即正文包含在多个<div>的情况。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档