网页新闻抓取(我找到的3种实现方法,但基于dom节点的评分制筛选算法)
优采云 发布时间: 2021-09-21 02:16网页新闻抓取(我找到的3种实现方法,但基于dom节点的评分制筛选算法)
请看看官方拍摄。 。 。
我一直对网页的内容非常感兴趣,我三年前做了一个“新闻读者”,我喜欢当时观看这个消息,想法是如果没有广告时观看新闻,一个安静有多好,然后我开发了一个浏览器书签小插件,使用JS提取页面,然后通过层封面显示在页面上,它只能被规律地思考,这也是大多数爬行者爬行者。
当时,网上,新浪,QQ和等各种主要门户都实现了这个功能。这是最傻瓜式方法,但益处是高精度。 DIDTTRESS是,一旦目标网页修改源代码,您可能需要重新出现。
我找到了越来越多的页面,我要观看,这种方式不再适合我的需求。但最近因为我已经开发了,我需要一个集合助手,所以我开始寻找解决方案。
我主要发现三种解决方案:
1)评评评制制算算制算算算制
有一个被称为可读,地址的外国浏览器书签插件:当时,这是非常钦佩的,并且精度高。
2)基于文本密度分析(DOM-Indumenty)
这种方法的想法也很好,适用性更好,我试图使用js来实现,但能够做出有限匹配的能力太高,放弃了。
3)基于图像识别
alpha狗使用的方法非常接近,通过图像识别,只要机器人可以完成,有大量的情况,但没有看到文本识别特定实现(或没有找到案例)。
上面是我找到的三种实现方法。
但基于我只是一个Web开发人员,只有理解JS,其他语言技能非常有限。所以我尝试了基于DOM的筛选,并且可读性相对复杂。我还能获得更有效的解决方案吗?
我发现了一个法律,文本部分一般来说,P标签的数量非常多,多于其他部分,因为大多数网页的内容被所需的编辑器释放,这些编辑器生成语义节点。
所以,我将使用此规则并开发一个小插件,效果也不错。当然,它仍然是非常原创的,需要改善。
var pt = $doc.find("p").siblings().parent();
var l = pt.length - 1;
var e = l;
var arr = [];
while(l>=0){
arr[l] = $(pt[l]).find("p").length;
l--;
}
var temArr = arr.concat();
var newArr = arrSort(arr);
var c = temArr.indexOf(newArr[e]);
content = $(pt[c]).html();
代码非常简单,但我已经过超过80%的网页(主要是文章页面)可以成功。基于此,我开发了Jspapa 采集 Assistant:
如果您有更好的解决方案,您可以讨论它。
如果需要重新打印本文,请联系作者,请指定源