网站内容抓取工具(如何快速使用Readability?的实现原理是什么?(组图))
优采云 发布时间: 2021-08-30 03:13网站内容抓取工具(如何快速使用Readability?的实现原理是什么?(组图))
内容
什么是可读性?
如果你在网上看到一个好的文章,想采集起来以后阅读,但又不想同时保存那一堆五颜六色的广告或一些无足轻重的网页元素,那么你可以试试可读性!
Readability 是一项独特的“稍后阅读”网络采集夹服务。除了在看到喜欢的文章时加书签,它最大的特点是可以自动智能删除网页一些不重要的元素重新格式化,只呈现给你一个干净整洁的身体部位,让你的阅读体验更好!除了主流浏览器插件外,还提供iOS/Android/Kindle等移动版应用,可同步到手机,随时随地高效舒适阅读……
Readability的实现原理
从网页中提取主要内容一直是一种更具挑战性的算法。
可读性以前是开源的,但不再公开。以下是原创开源版本供参考:arc90labs-readability – Readability 清理网络上难以阅读的文章。
Readability 通过遍历 Dom 对象,为标签和常用文本添加和减去权重来重新整合页面的内容。接下来,我们将简要地看看这个算法是如何实现的。首先,它定义了一系列正则:
<p>regexps: {
unlikelyCandidates: /combx|comment|community|disqus|extra|foot|header|menu|remark|rss|shoutbox|sidebar|sponsor|ad-break|agegate|pagination|pager|popup|tweet|twitter/i,
okMaybeItsACandidate: /and|article|body|column|main|shadow/i,
positive: /article|body|content|entry|hentry|main|page|pagination|post|text|blog|story/i,
negative: /combx|comment||contact|foot|footer|footnote|masthead|media|meta|outbrain|promo|related|scroll|shoutbox|sidebar|sponsor|shopping|tags|tool|widget/i,
extraneous: /print|archive|comment|discuss|e[\-]?mail|share|reply|all|login|sign|single/i,
divToPElements: /[ \n\r\t]*){2,}/gi,
replaceFonts: /]*>/gi,
trim: /^\s+|\s+$/g,
normalize: /\s{2,}/g,
killBreaks: /((\s| ?)*){1,}/g,
videos: /http:\/\/(www\.)?(youtube|vimeo)\.com/i,
skipFootnoteLink: /^\s*(\[?[a-z0-9]{1,2}\]?|^|edit|citation needed)\s*$/i,
nextLink: /(next|weiter|continue|>([^\|]|$)|»([^\|]|$))/i, // Match: next, continue, >, >>, » but not >|, »| as those usually mean last.
prevLink: /(prev|earl|old|new|