八爪鱼采集入门到熟练——03 基本采集流程

经过第一篇的准备工作,第二篇的小信心案例,如果没有犯懒自我堕落的话,小萌新应该也把八爪鱼官网的视频教程看的差不多了吧。接下来进入采集流程,一步一步构架采集规则。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

一、分析和构建采集层级结构

采集页面和采集内容决定了采集的整体结构和流程,通常来说采集工具是不会做太深层级的采集的,因为会极大地增加采集失败的可能性。所以我们抛弃其他复杂的可能性,以标准化采集规范来说,那就是二级采集——列表页+内容页+分页,这是大多数采集最通用的方法。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

列表页指什么?内容页是什么? 本文来自小莫扎特博客www.plusminustsuchi.com 提供

如果我想采集网易国际新闻的标题、内容等信息,那么这个页面就是列表页。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

国际新闻_网易新闻中心

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

因为这个页面里有新闻的列表,而我们想采集的就是列表里的每一个点击进去的新闻内容页。说到这里,大家也就知道什么是内容页了,内容页也就是包含你具体需要采集信息的页面,内容页通常是列表页的下级页面。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

采集的第一步就是找到列表页,并在列表页建立翻页循环,先把列表定位完整。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

分页是什么?

本文来自小莫扎特博客www.plusminustsuchi.com 提供

如果内容页,也就是文章详细页面并不是一页显示,而是多页组成的,这样就称之为分页。比如我想采集一篇文章,文章分成了4页,那么就需要对分页进行采集。分页是平级的,通常都是因为网站一页不完整显示导致的。也就是: 本文来自小莫扎特博客www.plusminustsuchi.com 提供

列表页

本文来自小莫扎特博客www.plusminustsuchi.com 提供

——分页1

本文来自小莫扎特博客www.plusminustsuchi.com 提供

——分页2 本文来自小莫扎特博客www.plusminustsuchi.com 提供

……

本文来自小莫扎特博客www.plusminustsuchi.com 提供

这样的结构。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

分页也一样需要采用循环构建,和翻页循环本质一样。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

这样,通过循环我们就构建了二级采集结构,通常列表页需要构成两个循环,第一个循环是翻页循环,用于翻页,也就是俗称的“点击下一页循环”;第二个循环是列表循环,这个循环里包括了所有内容页,通常是“点击进入页面循环”。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

这里大家需要注意,翻页循环的点击操作是没有勾选在新标签页打开的,这是为了保证翻页循环本身的结构不变化。但是内容页循环的点击操作是默认自动勾选“在新标签页打开”的,因为这样每一个内容页都可以在不影响原有列表页的情况下独立打开和采集。所以如果你发现无法通过点击自动生成想要的循环,手动拖循环进来的话,则需要注意修改这些小细节设置,否则你就会被坑。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

二、详细分析待采集页面结构(尽可能分析部分源代码)

你可能想当然的以为内容页的页面结构都是一样的;也可能因为还没测试,不确定是否都一致;也可能之前测试时一致,但是采集一段时间后改版了。总之情况多种多样,万变不离其宗的就是要查看源码-单机测试采集-调整xpath。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

分析源代码进入的方法并不复杂,火狐和Chrome都是进入开发者模式,具体的操作可以看别人的教学: 本文来自小莫扎特博客www.plusminustsuchi.com 提供

神器--Chrome开发者工具(一) - Just For Fun - SegmentFault

本文来自小莫扎特博客www.plusminustsuchi.com 提供

重新介绍火狐开发者工具(1):Web控制台和Javascript调试器 - 文章 - 伯乐在线 本文来自小莫扎特博客www.plusminustsuchi.com 提供

这里推荐两个插件:

本文来自小莫扎特博客www.plusminustsuchi.com 提供

火狐——Firepath

本文来自小莫扎特博客www.plusminustsuchi.com 提供

Chrome——Xpath Helper

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

这两个插件可以用于快速验证xpath是否正确,并且可以高亮显示,非常方便。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

此外还有八爪鱼自带的xpath工具,如果在浏览器里xpath都是正确地,但是八爪鱼里就是无法提取出数据的情况下,记得用八爪鱼内置的工具做一下测试,看看八爪鱼获得页面源码是否和浏览器获取的不一样。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

三、复杂逻辑结构判定

在采集测试开始之前如果就可以发现逻辑结构分支是最好的,如果不能至少也要在单机测试之后尝试完善。不过提醒大家注意,八爪鱼在复杂的逻辑结构分支情况下,最好一开始就规划好,否则后期修修补补改改的时候,很快你就懵逼了,各种错误和问题都让你摸不到头脑。最简单的办法就是删了整个规则重做,会让你很崩溃,所以越早规划好采集思路越容易做出一个完善的规则。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

看到这里很多人还一脸懵逼,为啥要复杂化?为啥叫复杂逻辑机构?这个东西是这么来的,有的时候我们采集数据的时候,虽然都是内容页,但是内部格式有变化,举个栗子,大众点评里,有的店铺有完整图片和说明,有的是低端店铺,只有最简单的信息,而且页面格式完全不一样了。这种时候我们很难写一个通用的xpath语句,而且采集条目甚至都可能不一样。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

这个时候八爪鱼采集器的条件判断就可以发挥作用了,非常类似if else语句,通过对页面元素或者文本的判断,可以执行完全不同的采集流程,可以说是非常好用。另外还有一种情况就是对出问题的时候的判定,比如如果页面里提示输入验证码了,则执行的流程是先输入验证码,再继续采集的流程,而不是原本的采集流程(原有的流程肯定会认为本页没有数据就跳过去了)。大家要用好条件判断,这样可以很大程度上避免采集不到数据或者数据漏采的情况。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

四、数据提取和后期处理

数据提取通常可以用比较简单的方法提取,也就是通过点击直接提取文本或者链接。但是真正擅长看源码的人知道,有时候想提取的信息并不一定是文本,有可能是元素的某个属性,比如id、src、style之类的。这个时候八爪鱼的数据提取下面的编辑按钮就有用了,首先是可以自定义元素定位,如果你觉得通过点击生成的定位不准,可以自己写xpath来替换;之后是元素提取方式,这里有很多种提取办法,其他工具可能需要用正则表达式才能提取的属性,我们可以很简单的直接选择,也可以快速选取提取链接或者其他html代码。到这一步就算提取出来我们想要的大概的东西了,如果已经满足了就好,如果还需要做文本处理,就需要进一步勾选处理。 本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

八爪鱼提供了比较泛用的文本处理方法和工具,首先是最简单的替换功能,其次是万能的正则表达式(苦学吧,这玩意比xpath坑还深)。除此之外还有时间处理、html的基本处理等等。因为八爪鱼内置了正则表达式工具,相信我,用心学一学这个小公举,你可以省去很多自学正则表达式的时间,这个东西绝对是神器,单独做成一个小工具我都愿意天天带着!

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

五、小细节设置

每一个新人都遇到了一个大问题就是很多网上其他人说的设置找不到,实际上这个主要是因为八爪鱼的很多细节设置都在各个操作中的高级部分,导致新人不熟悉,或者没用到过,就不知道怎么找。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

这里的简单办法就是把操作都拉进流程,然后一个一个点开看高级设置都有哪些,慢慢记住便可,实战中只要多看看高级设置,很快就会知道有什么。高级设置和小细节设置和操作是对应的,用心想一下我需要的操作就能明白应该在哪里找。比如:我想打开页面后自动滚动到最下面,这个设置可能出现在哪里?毫无疑问首先是打开URL的时候,其次是我点击某个链接的时候,这样一下子就可以知道在哪些操作步骤里找这个设置了。

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

下面是一些小心得: 本文来自小莫扎特博客www.plusminustsuchi.com 提供

  • 打开、点击操作都有滚动到底端或者滚动到某一位置的设置,主要解决瀑布流网页等
  • 打开页面如果担心太慢,延时可以设置为20秒左右甚至更短,记得单机测试别漏数据
  • 6.0版本新建任务的时候就可以选择屏蔽广告、是否加载图片、是否以手机版进入,7.0版以后则是建立好任务之后,顶部的设置里有这些选项
  • 打开页面有失败重试的设置,如果害怕各种情况导致的页面没有载入,记得设置这里
  • 点击操作的重点是如果进入内容页,就一定要勾选在新标签页打开,如果是平级则尽量不勾选
  • ajax加载出现在点击操作里,打开页面操作并没有这个选项
  • 下拉菜单切换根据html写法,有时候好用有时候不好用,一边看源代码一遍做测试吧
  • 自己写xpath的时候,记得小心iframe问题,自定义元素定位的设置里有这个选项
  • 绝大多数的操作都有延迟的设置,为了避免封IP,可以适当进行设置,但是要小心对采集速度的影响
  • 条件判断是可以多重的,并不是只能2个,右键点击可以复制和粘贴,哪怕做的复杂一些也没关系,记住是从左往右依次判断条件,所以最后一个条件一定要设置为默认执行
  • 如果想打开一系列网址,那么自己拉个循环进来,输入url列表,然后再拉个打开页面进来,勾选设置里的打开循环里的网址便可(目前最大数量是2万个URL)

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

六、单机测试和问题排查

不管怎么写好规则,都可能会遇到问题,因为八爪鱼规则编制并不是所见即所得,是的!不要被骗了,规则编辑时你感觉一切都顺利,然而开始单机测试之后,一切都不是你想的那样。这个时候就是我们大家一起过来恭喜你入坑的时候!

本文来自小莫扎特博客www.plusminustsuchi.com 提供

 

本文来自小莫扎特博客www.plusminustsuchi.com 提供

  本文来自小莫扎特博客www.plusminustsuchi.com 提供

要回避坑,很难!为什么这么说,因为这是经验问题……小萌新就慢慢被坑吧……老手坑多了以后逐步就知道如何排查问题了。下面开始“扫雷”: 本文来自小莫扎特博客www.plusminustsuchi.com 提供

 
  • 排查页面是否是ajax加载的,如果是,不勾选的话,后面的数据就无法载入
  • 检查打开页面是否卡住,适当修改页面载入超时时长;如果勾选了不加载图片,有的页面也可能卡住导致长时间被视为没加载完
  • 如果是flash载入的数据,比如百度指数,很多是无法采集的
  • 有些数据可能是页面向下滚动才加载的,不要以为一上来页面就全都有了
  • 不要太相信点击生成的翻页循环,用自己的眼睛测试和查看源码,否则就各种翻页问题
  • 一定要看一下最后一页是什么样子,否则你可能就被坑在无限翻页循环里
  • 单机测试可能你测试的页面不够多,也许网站在你采集时间长了以后会封IP或者提示你输入验证码,这个只有一次大量采集之后才会发现
  • 如果你采集国外的网站,不要认为云采集一定能和你本机一样轻易的打开,因为我国是河蟹社会
  • 需要登录的网站不要随便用云采集,从网站角度想想,如果某用户的账号同时被多个IP登录,那么网站的第一反应不一定是“这是个SB写的爬虫”,而是“亲,你的账户可能被盗了,请更换密码再登录”

内容版权声明:以上内容均为转载,如有侵犯原作者请联系删除!