八爪鱼,百万用户信赖的网络爬虫工具

微信热门文章采集攻略|干货在此!

作者:keven 发布时间:1/15/2018 5:53:01 PM 5353 人已阅读

摘要:当前什么文章最受关注?他们都在讨论什么内容?阅读量高的文章如何配图?有了八爪鱼,文章+图片,一样手到擒来,你不想知道怎么采么?

当前什么文章最受关注?

他们都在讨论什么内容?

阅读量高的文章如何配图?

有了八爪鱼

文章+图片

一样手到擒来

你不想知道怎么采么?

 

1、创建采集任务

 

现在进入数据采集时间,本文使用的是八爪鱼采集器7版本

打开八爪鱼,界面上有三种采集模式可以选择

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

 

 

 

2)拖动完成后,如下图所示

 

 

 

6、数据采集及导出

 

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

 

 

 

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

 

 

 

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

 

 

 

7、增加判断条件

 

通过前6个步骤,我们仅采集了微信文章里的文本内容,并不包括文章里的图片URL。如果需要采集图片URL,则需往规则里加入一个判断条件:对文章内容列表进行判断,如果包含img元素(图片),则执行图片采集分支;如果不包含img元素(图片),则执行文本采集分支。

 

同时,在八爪鱼中,默认对左侧分支,设置判断条件,满足此判断条件,则执行左侧分支;默认最右侧分支为“不判断,总是执行该分支”,即当不满足左侧分支的判断条件时,则执行最右侧分支。

 

回到此规则,即对左侧分支设置条件:如果包含img元素(图片),则执行左侧分支;如果不满足左侧条件分支的条件(即不包含img元素),则执行右侧分支。具体操作如下:

 

1)从左侧工具栏,往流程中拖入一个“判断条件”步骤(选定图标拖住不放,拖入箭头所示的绿色加号位置)

 

 

 

2)流程图中出现判断条件。我们将“提取数据”步骤,移动到右侧分支中(绿色加号处)。再点击右侧分支,在出现的结果页面(分支条件检测结果-检测结果总是True)点击“确定”

 

 

“提取元素”步骤,拖入右侧分支

 

 

右侧分支-检测结果总是True

 

3)点击左侧分支,在出现的结果页面(分支条件检测结果-检测结果总是True)点击“确定”。然后对其设置判断条件:勾选“当前循环项包含元素”,输入元素Xpath://img(代表图片),再点击“确定”

 

 

点击左侧分支

 

 

对左侧分支,设置判断条件

 

4)左侧分支条件设置完毕后,再进行提取数据步骤。从左侧工具栏,拖入一个“提取数据”步骤,到流程图中的左侧分支中(绿色加号处),然后选中页面内一张图片,在操作提示框中,选择“采集该图片地址”

 

 

拖入新的“提取数据”步骤,到左侧分支

 

 

采集图片地址

 

5)选中右侧分支的“提取数据”步骤,点击“自定义数据字段”按钮,选择“自定义定位元素方式”,将红框中的“元素匹配的Xpath”:

//*[@id="js_content"]/p[1]/span[1]与“相对Xpath”:/span[1],记录下来

 

 

自定义定位元素方式

 

 

元素匹配的Xpath、“相对Xpath”

 

6)选中左侧分支的“提取数据”步骤,点击“自定义数据字段”按钮,选择“自定义定位元素方式”,参照右侧分支相同位置的Xpath进行修改:“元素匹配的Xpath”改为://*[@id="js_content"]/p[1]/img[1],“相对Xpath”改为:/img[1],然后点击“确定”

 

 

 

7)选中左侧分支的“提取数据”步骤,点击“自定义数据字段”按钮,选择“自定义数据合并方式”,如图进行勾选。勾选后,多次提取的正文将追加为一个字段

 

 

 

8)注意,在八爪鱼中,判断条件里各分支中的“提取数据”步骤中的字段名需相同,字段个数需一致。这里,我们将左右两个分支中,提取的字段名均改为“正文”

 


 

9)如上,整个判断条件设置完毕。点击左上角的“保存”并“开始采集”。我们发现,在导出的excel表格中,图片地址为一堆乱码。这是为什么呢?

 

继续观察网页——搜狗微信文章正文里的图片,需下拉滚动,才能加载出来,加载出来后才能采集到正确的图片地址。因而,在打开文章后,需对其进行设置“页面加载完成后向下滚动”。在这里,设置滚动次数为“30次”,每次间隔“2秒”,滚动方式为“向下滚动一屏”


下拉加载图片才会出现

 

 

设置“页面加载完成后向下滚动

 

注意:这里的滚动次数、时间、方式的设置,会影响采集数据的速度、质量。本文仅做参考,大家可按需设置

 

10)重新启动采集,并导出数据,数据导出后如图所示:

 

 

 

导出数据,数据示例

   

 

 

温馨提示

 

因搜狗微信文章中的图片,需经过下拉滚动,方可加载出来。在采集过程中,大量时间用在等待图片加载,因而采集速度较慢。如果没有采集图片的需求,直接使用文本采集,无需等待图片加载,采集速度会快很多。

 


 

 


欢迎咨询在线客服
加微信群,与更多用户一起交流