很多时候,我们有采集网页文章正文的需求。本文以搜狗微信文章为例,介绍使用八爪鱼采集网页文章正文的方法。文章正文里一般包括文本和图片两种。本文仅演示采集正文中本文的方法,图文采集会在另一篇教程中讲到。

 

本文将采集以下字段:文章标题、时间、来源和正文(正文中的所有文本,将合并到一个excel单元格中,将使用到“自定义数据合并方式”功能,请大家注意)。以下为“自定义数据合并方式”详解教程,大家可先了解一下:

/tutorialdetail-1/zdyhb_7.html

 

采集网站:http://weixin.sogou.com/

 

 

使用功能点:

l 分页列表信息采集

/tutorial/fylb-70.aspx?t=1

l Xpath

/tutorial/gnd/xpath

l AJAX点击和翻页

/tutorialdetail-1/ajaxdjfy_7.html

 

步骤1:创建采集任务

1)进入主界面,选择“自定义模式

 

 

2)要采集的网址URL制粘贴到网站输入框中,点击保存网址

 

 

步骤2:创建翻页循环

1)在页面右上角,打开“流程”,以展现出“流程设计器”“定制当前操作”两个板块。网页打开后,默认显示“热门”文章。下拉页面,找到并点击“加载更多内容”按钮,在操作提示框中,选择“更多操作”

 

 

2)选择“循环点击单个元素”,以创建一个翻页循环

 

由于此网页涉及Ajax技术,我们需要进行一些高级选项的设置。选中“点击元素”步骤,打开“高级选项”,勾选“Ajax加载数据”,设置时间为“2秒”

 

 

注:AJAX即延时加载、异步更新的一种脚本技术,通过在后台与服务器进行少量数据交换,可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

表现特征:a、点击网页中某个选项时,大部分网站的网址不会改变;b、网页不是完全加载,只是局部进行了数据加载,有所变化。

验证方式:点击操作后,在浏览器中,网址输入栏不会出现加载中的状态或者转圈状态。

 

观察网页,我们发现,通过5次点击“加载更多内容”,页面加载到最底部,一共显示100篇文章。因此,我们设置整个“循环翻页”步骤执行5次。选中“循环翻页”步骤,打开“高级选项”,打开“满足以下条件时退出循环”,设置循环次数等于“5次”,点击“确定”

 

 

 

步骤3:创列表循环并提取数据

1)移动鼠标选中页面里第一条文章链接。系统会自动识别相似链接,在操作提示框中,选择“选中全部”

 

 

2)选择“循环点击每个链接”

 

 

3)系统会自动进入文章详情页。点击需要采集的字段(这里先点击了文章标题),在操作提示框中,选择“采集该元素的文本”。文章发布时间、文章来源字段的采集方法同理

 

 

4)接下来开始采集文章正文。先点击文章正文的第一段,系统会自动识别页面内的同类元素,选择“选中全部”

 

 

5)可以看到,所有的正文段落均被选中,变为绿色。选择“采集以下元素文本”

 

 

注意:在字段表中,可进行字段的自定义修改

 

 

6)经过如上操作,正文就会被全部采集下来(默认为每一段正文为一个单元格)。一般而言,我们希望采集的正文,合并为同一个单元格。点击“自定义数据字段”按钮,选择“自定义数据合并方式”,勾选“同一字段多次提取合并为一行,即追加到同一字段,例如正文分页合并”,再点击“确定”

 

“自定义数据字段”按钮

 

选择“自定义数据合并方式”

 

如图进行勾选

 

步骤4:修改Xpath

1)选中整个“循环步骤”,打开“高级选项”,可以看到,八爪鱼默认生成的是固定元素列表,定位的是前20篇文章的链接

 

 

2)在火狐浏览器中打开要采集的网页并观察源码。我们发现,通过此条Xpath:

//DIV[@class='main-left']/DIV[3]/UL/LI/DIV[2]/H3[1]/A,页面中所需的100篇文章均被定位了

 

 

3)将修改后的Xpath,复制粘贴到八爪鱼中所示位置,然后点击“确定”

 

 

步骤5:修改流程图结构

我们继续观察,通过5次点击“加载更多内容”后,此网页加载出全部100篇文章。因而我们配置规则的思路是,先建立翻页循环,加载出全部100篇文章,再建立循环列表,提取数据

1)选中整个“循环”步骤,将其拖出“循环翻页”步骤。如果不进行此项操作,那么将会出现很多重复数据

 

拖动完成后,如下图所示

 

 

步骤6:数据采集及导出

1)点击左上角的“保存”,然后点击“开始采集”,选择“启动本地采集”

 

 

2)采集完成后,会跳出提示,选择导出数据”,选择合适的导出方式,将采集好的数据导出

 

 

3)这里我们选择excel作为导出为格式,数据导出后如下图

 

 

4)如上图,部分文章的正文没有采集到。那是因为,系统自动生成的文章正文的循环列表的Xpath://[@id="js_content"]/P,定位不到此篇文章的正文。将Xpath修改为://[@id="js_content"]//P,所有的文章正文均可被定位到

 

修改Xpath前

 

 

说明:本文的方法仅适用于采集搜狗微信文章正文的文本内容,不可采集正文中的图片,如需采集图片,则需在流程中加入一个判断条件。