目前,大型博客一般都采用大量的AJAX技术,例如,展现博客评论时,用Javascript代码异步加载;又如,博文的点击数和回复数等元数据一般也用Javascript异步加载。页面抓取软件MetaSeeker具有很强的AJAX内容抓取能力,可以处理很多复杂情况,然而,MetaSeeker的可选配置项也很多,一时难于全面掌握。在此,我们讲解一个抓取腾讯博客内容的实例,展示怎样抓取AJAX异步加载的博文点击数。
读者可以用页面抓取规则定义工具MetaStudio加载主题名为citic_blog_qzone_detail的信息结构,本信息结构设置了延长模式功能选项,加载信息结构时系统会提示用户点击“后续分析”菜单。本信息结构需要抓取点击数和回复数,用于商业情报挖掘和分析。
该页面上的点击数是用Javascript异步加载的,如果没有采取特别措施,很容易抓取到loading...字样,编辑本信息结构的整理箱,可以看到信息属性“点击数”和“回复数”设定了自定义XPath抓取规则,即设置了XPath过滤器,内容提取表达式和节点定位表达式都定义了以下规则
*//*[@id='viewCntSpan']/text()[not(contains(., 'loading'))]
其中not()函数表示不抓取“loading”字符串,直到点击数加载上才抓取。