最近在在做一个与资讯相关的APP,资讯是通过爬取获得,但是获取只有简单的信息,正文没有获取。所以在显示的时候很麻烦,一个<a>标签链到到别人的网页,满屏的广告
,还有各种弹窗,虽然页面确实做得很漂亮,但是不得不放弃这种简单的方式了,所以接下来自己动手了。
首先我们做的是基于HTML5的APP,所以基本上就是和网页打交道。但是接下来问题就来了,当用户点击某一条资讯时,该由谁来解析这个网页最后呈现给用户看,手机端还是服务器端?其实都有问题,最简单的肯定是通过我们的服务器来解析后然后在封装成html给用户呈现,但是这样必定会增加服务器的压力,而且还有被封的可能性。在手机端,要取得html只有两种可能,js或者jsp,但是前者是不能跨域访问的,后者其实也是在服务器端运行的。最终解决方法,手机端用一个原生态的界面来呈现,不经可以解析链接,而且效果应该也比网页好,但是这和我们初心的不一致,那就是除了主界面其他都是网页,目前暂定这种方式。那么接下来问题又来了,改用什么方式来获取正文呢?有很多种算法,提供一篇算法介绍的博客:点击打开链接
我使用的是基于行块分布函数的网页正文抽取算法,因为这个算法比较简单,准确率不是很高,基本思想:
1.首先将网页中的html标签全部去掉,再去掉空白行和空白部分,得到文本