如何识别並提取网页正文?

发布于 2022-09-01 05:04:54 字数 465 浏览 16 评论 0

啓發自:如何将一个网页的文本全部提取出来?

很多類似 readability 的服務,都能識別並提取網頁的正文,比如 Safari 的 Reader View。記得 Google 也會識別並增加「正文」的關鍵字權重。

大多數情況效果很好,偶爾也會出現誤包含其它部分的情況。

那麼,首先,技術上如何實現這一功能?包括但不限於利用 HTML5。

其次,如何儘可能避免匹配不完整/過多的情況?


目前的思路有二

一是完全依賴正確使用的 HTML5 標籤的語義、以及特定含義的 class

二是進行統計,以 block 元素進行分層,得到更高(更廣)一層不會顯著增加字數的一層即爲正文層。

困窘:對於知乎這類包含多個獨立正文的情況,如何處理

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

如果没结果 2022-09-08 05:04:54

有个基于行块密度的简单算法 可以很容易在网上搜到(似乎就是你的第二点)
但是这种东西肯定需要大量的经验 即便是行块密度也要根据经验过滤掉不应该是正文的东西
除了你要适配页面 页面也要正规 比如h1-hx做标题,p做段落,ul表示列表,正文带有content或者.content等告诉移动浏览器来抓这里的东西
否则自动适配几乎不可能

但是你不要忘了一点 网页设计就算是再花样 也无外乎那么几种 完全可以预制再程序中 甚至可以内置一些关键词去猜这段文字想描述什么东西

抚你发端 2022-09-08 05:04:54

以前给一家公司写过。确实,行块密度是个比较好的方法。但是如果你的目标网站正文内容比较短,效果不好。类似的还可以用链接数量密度等方法帮助筛选,但没有通用的办法。有些网站的内容是ajax后加载的,这种其实只有好,你可以去找它传的内容。总之,都是ad hoc的,具体问题具体分析。通用解对你的特定网站效果不见得好。我当时还用过xulrunner,让它渲染网页,然后找出占据屏幕中心大块位置的元素的xpath,以此来找新遇到的网站正文什么的,效果也不好(当然,也许是个人能力不够吧)。

稀香 2022-09-08 05:04:54

这里有一个最大行连续也就是行块密度的 Python 实现
https://github.com/Newt0n/yapCrawler/blob/master/extractor.py

口干舌燥 2022-09-08 05:04:54

不存在一种方法『一定』能提取出正文,所有的策略都是去猜测,可以使用你提到的所有特征,最后评价的就是准召。

欢你一世 2022-09-08 05:04:54

关键字

cx-extractor

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文