由于别的项目组在做舆情的预言项目,我手头正好没有什么项目,突然心血来潮想研究一下爬虫、分析的简单原型。网上查查这方面的资料还真是多,眼睛都看花了。搜了搜对于我这种新手来说,想做一个简单的爬虫程序,所以HttpClient + jsoup是一个不错的选择。前者用来管理请求,后者用来解析页面,主要是后者的select语法很像jquery,对于用js的我来说方便太多了。
昨天和他们聊天的时候,他们选用了几个著名的开源框架使用,聊着聊着就发现原来他们目前还没有办法抓取动态的网页,尤其是几个重要的数字,例如评论数,回帖数等等。大致了解了一下,例如TRS的爬虫,对于js的调用,需要写js脚本,但是分析量巨大,他们的技术人员告诉我们,类似这样的模板他们配的话,一天也就只能配2到3个,更不要说我们这些半路出家的。正好觉得颇有挑战,所以昨天答应了他们看看能不能找到一个相对来说简单的解决办法,当然,先不考虑效率。
举一个简单的例子,如下图
“我有话说”后的1307就是后加载的,但是往往这些数字对于舆情分析来说还是比较重要的。
大致了解了需求,就分析一下如何解决。通常,我们的一次请求,得到的回应是包含js代码和html元素的,所以对于jsoup这样的html解析器在这里就难以发挥优势,因为它所能拿到的html,1307还没有生成。这个时候就需要一个可运行js的平台,将运行过js代码的后的页面,交由html解析,这样才能正确获得结果。
由于我比较偷懒,写脚本的方式一开始就被我抛弃了,因为分析一个页面太痛苦了,代码乱成一锅粥,好多还采用压缩的办法,满眼都是a(),b()的方法,看的太累了。所以我最优先想到的是,为什么我不能让这个地址在某个浏览器中运行,然后将运行的结果交给html解析器去解析,那么整个问题不就迎刃而解了吗。这样我暂时的解决方案就是在爬虫服务端,开一个后台的浏览器,或者是有浏览器内核的程序,将url地址交给它去请求,然后从浏览器中将页面的元素取出,交给html解析器去解析,从而获取自己想要的信息。
明天接着聊,先休息了。