09⼁数据采集:如何⽤⼋⽖鱼采集微博上的“DG”评论
⼋⽖鱼的基本操作
在开始操作前,我先来介绍下今天要讲的主⾓“⼋⽖鱼”⼯具。相⽐使⽤ Python 进⾏爬⾍,⼋⽖鱼的使⽤更加简便,因为是所见即所得的⽅式,基本上不需要编写代码,除了在正则表达式匹配的时候会⽤到 XPath。
这⾥简单介绍下 XPath,XPath 的英⽂是 XML Path Language,也就是 XML 的路径语⾔,⽤来在 XML ⽂件中寻我们想要的元素。所以⼋⽖鱼可以使⽤ XPath 帮我们更灵活地定位我们想要的元素。
⾃定义任务 VS 简易采集
如果你想要采集数据就需要新建⼀个任务,在建任务的时候,⼋⽖鱼会给你⼀个提⽰,是使⽤⼋⽖鱼⾃带的“简易采集”,还是⾃定义⼀个任务。
简易采集集成了⼀些热门的模板,也就是我们经常访问的⼀些⽹站。它可以帮助我们轻松地实现采集,只需要我们告诉⼯具两个信息即可,⼀个是需要采集的⽹址,另⼀个是登录⽹站的账号和密码。虽然简易采集⽐较⽅便快捷,但通常还是推荐使⽤⾃定义任务的⽅式,这样可以更灵活地帮我们提取想要的信息,⽐如你只想采集关于“D&G”的微博评论。
流程步骤
⼋⽖鱼的采集共分三步:
1.输⼊⽹页:每个采集需要输⼊你想要采集的⽹页。在新建任务的时候,这⾥是必填项。
2.设计流程:这个步骤最为关键,你需要告诉⼋⽖鱼,你是如何操作页⾯的、想要提取页⾯上的哪些信息等。因为数据条数⽐较多,通常你还需要翻页,所以要进⾏循环翻页的设置。在设计流程中,你可以使⽤简易采集⽅式,也就是⼋⽖鱼⾃带的模板,也可以采⽤⾃定义的⽅式。
3.启动采集:当你设计好采集流程后,就可以启动采集任务了,任务结束后,⼋⽖鱼会提⽰你保存采集好的数据,通常是 xlsx 或 csv 格式。
如果你使⽤的是⾃定义采集,就需要⾃⼰来设计采集流程,也就是采集流程中的第⼆步。⼋⽖鱼的流程步骤有两类,可以划分为基本步骤和⾼级步骤。
基本步骤就是最常⽤的步骤,每次采集都会⽤到,⼀共分为 4 步,分别是打开⽹页、点击元素、循环翻页、提取数据。
⾼级步骤是辅助步骤,可以帮我们更好地对数据进⾏提取,⽐如我们想要某个关键词的数据,就需要在⽹页输⼊框中输⼊对应的⽂字。有时候源⽹页的系统会提⽰需要输⼊验证码,我们就可以采⽤验证码识别的模块帮我们解决。
有时候我们需要⽤下拉选项帮我们筛选想要的数据,或者某些判断条件下(⽐如存在某个关键词)才触发的采集等。这些操作可以更精细化地提取想要的数据。
下⾯我来介绍下基本步骤:
1.  打开⽹页所有的采集默认第⼀项都是打开⽹页。所以在新建任务之后,系统会提⽰你输⼊⽹址。当你输⼊之后,⼋⽖鱼就会⾃动建⽴⼀个“打开⽹页”的流程。
2. 点击元素这⾥元素的定义⽐较⼴泛,它可以是某个按钮,或者某个链接,也或者是某个图⽚或⽂字。使⽤这个步骤是你在搜索或者提交某个请求。当你点击元素后,⼋⽖鱼会提⽰你想要达到的⽬的:点击该按钮、采集该元素⽂本、还是⿏标移到该链接上。然后再选择“点击该按钮”进⾏确认即可。如果我们点击某个元素的⽬的是循环翻页,或者提取数据,那么在点击之后,⼋⽖鱼会确认你的⽬的,你只要点击相关的按钮即可。
3. 循环翻页很多数据都存在翻页的情况,通常你需要到翻页的位置,⽐如⽹页底部的“下⼀页”按钮,点击它,会提⽰你“循环点击下⼀页”、“采集该链接⽂本”还是“点击该链接”。你需要确认这⾥是进⾏的“循环点击下⼀页”。
4. 提取数据在⽹页上选择你想要提取的页⾯范围,⿏标移动到页⾯上会呈现蓝⾊的阴影⾯积,它表明了你想提取的数据范围。然后点击⿏标后,在右侧选择“采集数据”即可 .
这 4 个基本操作就像它们的名称⼀样简单直接,这⾥我给你⼀些使⽤的建议:
1.尽量使⽤⽤户操作视⾓进⾏模拟的⽅式进⾏操作,⽽不是在“流程视图”中⼿动创建相应的步骤。因为⼋⽖鱼最⼤的特点就是所见即所得,所以⼀切就按照⽤户使⽤的流程进⾏操作即可。
2.使⽤“流程视图”⽅便管理和调整。右侧有“流程视图”的按钮,点击之后进⼊到流程视图,会把你之前的操作以流程图的⽅式展⽰出来。我会在⽂章下⾯详细介绍⼀下。
为什么要这么做呢?这样的话每个步骤流程清晰可见,⽽且你还可以调整每个步骤的参数,⽐如你之前的⽹址写错了想要修改,或者之前输⼊的⽂字需要调整等。
另外很多时候需要账号登录后才能采集数据,我们可以提前在⼋⽖鱼⼯具⾥登录,这样再进⾏抓取的时候就是登录的状态,直接进⾏采集就可以了。
采集微博上的“Dolce&Gabbana”评论
在了解基本步骤之后,我们就可以⾃⼰动⼿采集内容了。⽐如说我想要采集微博上关于“D&G”的评论,那么我可以先在浏览器上,⼈⼯操作下整个流程,梳理出来以下的步骤。
这⼏个流程具体是怎么做的呢?我来给你⼀⼀梳理⼀下。
1.  输⼊⽹页对应基本步骤“打开⽹页”,我们输⼊微博搜索的地址。
2.  输⼊关键词对应“输⼊⽂本”,我把⿏标移动到输⼊框中,点击后会在右侧进⾏操作⽬的的确认,选择“输⼊⽂本”即可,然后输⼊我们想要搜索的内容“D&G”。
3.  点击搜索对应“点击元素”,我们点击“搜索按钮”,然后确认操作⽬的是“点击元素”。
4.  设置翻页因为我们想要采集全量数据,因此需要先设置翻页。这⾥特别注意下,翻页的操作要在数据提取之前,因为翻页是个循环的命令,就像我们平时写 for 语句⼀样,⼀定是先设置 for 循环,然后在循环中进⾏数据提取。
5.  提取数据提取数据的时候,我们需要提取多个字段,⽐如,⽤户、微博内容、发表时间、该微博⽹址。⽽且⼀个页⾯上会有多个微博,都需要进⾏采集。所以你需要先选择单条内容的最⼤的⽬标区域,在确认⽬的时,会发现⾥⾯有⼦元素,这⾥⽬的选择为“选中⼦元素”。因为我们要对⼦元素内容进⾏采集,⽅便把内容按照字段进⾏划分。这时会提⽰页⾯中还有 20 个相同元素时,选择“选中全部”即可。
6.  启动采集都选择好之后,系统会给出三个提⽰,分别是“启动本地采集”、“启动云采集”和“设置定时采集”。数据量不⼤的时候,我们选择“启动本地采集”即可。你可以看出,这整个过程⽐较简便,但中间有⼀些细节你可能会出错,⽐如说你忘记了先翻页,再选取你想提取的元素。这样如果遇到了问题,有两个重要的⼯具⼀定要⽤好:流程视图和 XPath。
流程视图
流程视图我在上⾯提到过,这⾥详细介绍⼀下。流程视图应该是在可视化中应⽤最多的场景,我们可以使⽤流程视图查看创建流程,调整顺序,或者删掉不想要的步骤。
另外我们还能在视图中查看数据提取的字段。选中“提取数据”步骤,可以看到该步骤提取的字段都有哪些。⼀般都会出现很多冗余的字段,因为 HTML 代码段中有很多隐藏的内容也会被提取到,这⾥你可以删掉没⽤的字段,把保留的字段名称进⾏备注修改。这⾥有张图,是我通过⼋⽖鱼可视化操作采集微博评论时,⾃动⽣成的流程视图。
XPath
介绍完流程视图之后,我们再来说⼀下 XPath。在⼋⽖鱼⼯具中内置了 XPath 引擎,所以在我们⽤可视化⽅式选择元素的时候,会⾃动⽣成相应的 XPath 路径。当然我们也可以查看这些元素的 XPath,⽅便对它们进⾏精细地控制。为什么有了可视化操作,还需要⾃⼰来定义XPath 呢?这是因为有时候我们采集的⽹站页⾯是不规律的,⽐如你可以看到微博搜索结果页中,第⼀页和第⼆页的 HTML 排版是不同的,这样的话,可视化操作得到的 XPath 可能不具备通⽤性。这种情况下,如果你⽤搜索结果第⼀页提取数据得到的 XPath,就⽆法匹配搜索结果页第⼆页的数据。在⼋⽖鱼⼯具中,很多控件都有 XPath,最常⽤的还是循环和提取数据中的 XPath,下⾯我来⼀⼀简单介绍下。
微博关闭评论循环中的 XPath
在微博采集这个例⼦中,我们⽤到了两种循环⽅式,⼀种是“循环翻页”,⼀种是“循环列表”。在“循环翻页”中,你可以在“流程视图”中点击“循环翻页”的控件,看到右侧的“⾼级选项”中的 XPath。在微博采集这个例⼦中,循环翻页的 XPath 是
//A[@class=‘next’]。
在“循环列表”中,我在提取数据的时候,出现了页⾯提⽰“还有 20 个相同元素”,这时我选择“选中全部”。
相当于出现了 20 个元素的循环列表。所以你在流程视图中,可以会看到提取数据外层嵌套了个循环列表。同样我们可以看到循环列表的 XPath 是
//DIV[@class=‘card-feed’]。
提取数据的 XPath
当我们点击流程中的“提取数据”,可以看到有很多字段名称,XPath 实际上定位到了这些要采集的字段。所以你需要选中⼀个字段,才能看到它的 XPath。现在你知道了,⼋⽖鱼的匹配是基于 XPath 的,那么你也可以⾃⼰来调整 XPath 参数。这样当匹配不到想要的数据的时候,可以检查下是不是 XPath 参数设置的问题,可以⼿动调整,从⽽抓取到正确的元素。
总结
今天我给你讲了⼋⽖鱼的使⽤,然后带你实现了⼀个微博采集的例⼦。你可能会想问,我为什么要讲⼀个⼋⽖鱼这样的第三⽅⼯具呢?这⾥讲下我的⼀些⼼得体会。
我们的⼯作流程通常很长,所以更应该专注⼯作的核⼼,⽐如说数据分析这块,所有的辅助都可以采⽤第三⽅⼯具来做。如果⽼板让你统计微博上的评论,实际上⽼板最想知道的不是采集的过程,⽽是整体的概况,⽐如说影响了多少⼈,评论如何,是否有 KOL 关注等等。
如果你之前没有数据采集的经验,那么第三⽅⼯具,以及采⽤可视化的⽅式来进⾏采集应该是你的⾸选。可视化的⽅式可以让你迅速上⼿,了解到整个数据采集的过程。
我们应该从基础步骤开始,遇到特定需求的时候再学习了解⾼级步骤。这篇⽂章只介绍了基本的流程,但你可以上⼿操作了。在实际操作中,你可能会遇到各种问题,这个时候再对⾼级步骤进⾏学习,如果要进阶的话,还需要你掌握 XPath 的使⽤。
好了,我来总结⼀下今天的内容。今天我讲了⼋⽖鱼的任务建⽴、流程设计,还有⼀个实操的案例。具体的内容概要可以看我整理的下⾯这张图。虽然⼋⽖鱼⼯具提供了各种简易采集的⽅式,我更建议你把它作为参考模板,可以看下别⼈是如何建⽴的,这样多做案例,你上⼿会更快。