微信公众号热门文章爬虫
2017-08-18 17:23:08 阅读量: 24461
本文介绍使用八爪鱼采集搜狗微信文章(以热门文章为例)的方法
采集网站:http://weixin.sogou.com/
搜狗微信搜索:搜狗微信搜索是搜狗在2014年6月9日推出的一款针对微信公众平台而设立的。“微信搜索”支持搜索微信公众号和微信文章,可以通过关键词搜索相关的微信公众号,或者是微信公众号推送的文章。不仅仅在PC端,搜狗的移动搜索客户端同样会进行相关的微信公众号推荐。
搜狗微信文章采集数据说明:本文进行了搜狗微信-热门内容的所有文章信息采集。本文仅以“搜狗微信-热门内容的所有文章信息采集”为例。大家在实操过程中,可根据自身需求,更换搜狗微信的其他内容进行数据采集。
搜狗微信文章采集详细采集字段说明:微信文章标题、微信文章导语、微信文章来源、微信文章发布时间、微信文章地址。
使用功能点:
步骤1:创建采集任务
1)进入主界面,选择“自定义模式”
2)将要采集的网址URL复制粘贴到网站输入框中,点击“保存网址”
步骤2:创建翻页循环
1)打开右上角的“流程”。网页打开后,默认显示“热门”文章。下拉页面,找到并点击“加载更多内容”按钮,在操作提示框中,选择“更多操作”
2)选择“循环点击单个元素”,以创建一个翻页循环
由于此网页涉及Ajax技术,我们需要进行一些高级选项的设置。选中“点击元素”步骤,打开“高级选项”,勾选“Ajax加载数据”,设置时间为“2秒”
注:AJAX即延时加载、异步更新的一种脚本技术,通过在后台与服务器进行少量数据交换,可以在不重新加载整个网页的情况下,对网页的某部分进行更新
表现特征:a、点击网页中某个选项时,大部分网站的网址不会改变;b、网页不是完全加载,只是局部进行了数据加载,有所变化
验证方式:点击操作后,在浏览器中,网址输入栏不会出现加载中的状态或者转圈状态
观察网页,我们发现,通过5次点击“加载更多内容”,页面加载到最底部,一共显示100篇文章。因此,我们设置整个“循环翻页”步骤执行5次。选中“循环翻页”步骤,打开“高级选项”,打开“满足以下条件时退出循环”,设置循环次数等于“5次”,点击“确定”
步骤3:创建列表循环并提取数据
1)移动鼠标,选中页面里第一篇文章的区块。系统会识别此区块中的子元素,在操作提示框中,选择“选中子元素”
2)继续选中页面中第二篇文章的区块,系统会自动选中第二篇文章中的子元素,并识别出页面中的其他10组同类元素,在操作提示框中,选择“选中全部”
3)我们可以看到,页面中文章区块里的所有元素均被选中,变为绿色。右侧操作提示框中,出现字段预览表,将鼠标移到表头,点击垃圾桶图标,可删除不需要的字段。字段选择完成后,选择“采集以下数据”
4)我们还想要采集每篇文章的URL,因而还需要提取一个字段。点击第一篇文章的链接,系统会自动选中页面中的一组文章链接。在右侧操作提示框中,选择“选中全部”
5)选择“采集以下链接地址”
6)字段选择完成后,选中相应的字段,可以进行字段的自定义命名
步骤4:修改Xpath
我们继续观察,通过5次点击“加载更多内容”后,此网页加载出全部100篇文章。因而我们配置规则的思路是,先建立翻页循环,加载出全部100篇文章,再建立循环列表,提取数据
1)选中整个“循环”步骤,将其拖出“循环翻页”步骤。如果不进行此项操作,那么将会出现很多重复数据
拖动后完成后,如下图所示
2)在“列表循环”步骤中,我们建立100篇文章的循环列表。选中整个“循环步骤”,打开“高级选项”,将不固定元素列表中的这条Xpath://BODY[@id='loginWrap']/DIV[4]/DIV[1]/DIV[3]/UL[1]/LI ,复制粘贴到火狐浏览器中的相应位置
Xpath:是一种路径查询语言,简单的说就是利用一个路径表达式找到我们需要的数据位置
Xpath是用于XML中沿着路径查找数据用的,但是八爪鱼采集器内部有一套针对HTML的Xpath引擎,使得直接用XPATH就能精准的查找定位网页里面的数据
3)在火狐浏览器中,我们发现,通过这条Xpath://BODY[@id='loginWrap']/DIV[4]/DIV[1]/DIV[3]/UL[1]/LI ,页面中被定位的是20篇文章
4)将Xpath修改为://BODY[@id='loginWrap']/DIV/DIV[1]/DIV[3]/UL/LI,我们发现页面中所有要采集的文章都被定位了
5)将改好的Xpath://BODY[@id='loginWrap']/DIV/DIV[1]/DIV[3]/UL/LI,复制粘贴到图片中所示的位置,然后点击“确定”
6)点击左上角的“保存并启动”,选择“启动本次采集”
步骤5:数据采集及导出
1)采集完成后,会跳出提示,选择“导出数据”,选择“合适的导出方式”,将采集好的搜狗微信文章的数据导出