内部机制
它如何工作,又在哪里止步
这里没有任何魔法。提取流程从不调用服务器;扩展程序唯一通信的地址是我们的统计端点。整个流程就在你正在看的页面中运行,只需几十毫秒。
找到文章
扩展程序首先查找文章通常所在的那些明显容器。如果没有这样的容器(很多真实网站确实没有),它就改为测量文本密度:哪个区块包含最多不在链接中的段落文本。仍然包含几乎全部这些文本的最窄区块胜出。
如果一个区块的文本大多是链接文字,那它是菜单或信息流,不是文章,会被排除;除非它包含超过大约 1200 个字符的真实文本,因为长文章本来就可能包含很多链接。
去掉页面杂项
接着去掉已知的非内容元素:导航、横幅、分享栏、Cookie 提示、分页器、“相关阅读”信息流和 Logo 条。重复的行也会被删除,因为在每个版块都重复出现的导航,是剪藏页面中最大的噪音来源。
其他剪藏工具保留的内容
[跳到正文](#main) [登录](/login) [注册](/register) [首页](/) [新闻](/news) [体育](/sport) [文化](/culture) [更多](/more) 我们使用 Cookie 及类似技术来改善你的体验。 [全部接受] [管理偏好] # 你要看的那篇文章 正文真正的第一段。 <div class="promo-inline"> ## 相关阅读 [另一个标题](/a) [又一个标题](/b) [还有第三个](/c)
最终进入笔记的内容
# 你要看的那篇文章 正文真正的第一段。
转换
表格由扩展程序自己序列化,而不是交给通用插件,因为通用转换器遇到包含列表或代码块的单元格就会出错。代码块的语言取自页面自身的标记。引用链接会在清理器删除它们所依赖的 id 之前,被收集为 Markdown 脚注:顺序很重要,一旦弄错,所有脚注都会悄无声息地丢失。
在哪里止步
商品页、信息流或搜索结果页上没有文章。扩展程序会检查生成好的 Markdown:如果其中超过四分之一位于链接文字中,它就报告“没有文章”,而不是给你三百个链接。这种拒绝是有意为之的,这也是这里的字符数比总会返回点什么的工具更低的原因。
它不做什么
- 不下载图片、视频或其他二进制资源:图片链接指向原网站
- 不抓取整站:一次一个页面,就是你当前所在的页面
- 不做摘要,也不改写:文章文本只做转换,不做编辑
- 不在浏览器保护的页面上运行,例如
chrome://页面和扩展程序商店本身
常见问题
剪藏一次需要多长时间?
普通文章只需几十毫秒;包含几百个脚注的超长页面需要几百毫秒。耗时显示在剪藏窗口的角落里。
在单页应用上能用吗?
能。它读取渲染完成后的 DOM,所以用 JavaScript 构建的文档网站,你看到的是什么,剪藏下来的就是什么。
jsonld-articlebody 提取模式是什么?
有些页面把文章文本放在结构化数据里,却始终没有把它渲染出来。当结构化数据中的文本明显多于 DOM 时,扩展程序就使用结构化数据,并记录下这一点。