数据爬取难?Automa插件帮你轻松搞定!
你是否遇到过这些困扰?手动复制粘贴数据太耗时,效率低下;想要批量收集网页数据,但不会写代码;尝试过其他爬虫工具,但都太复杂,学习成本高;担心爬虫会被网站封禁,不知如何处理。
别担心!今天我将教你使用Automa这个神器,让数据爬取变得简单又高效!
1. Automa:你的无代码数据采集助手
Automa是一个强大的Chrome浏览器自动化插件。它能帮你自动化浏览网页操作,批量采集数据,导出数据为各种格式,设置定时任务。
最重要的是:完全不需要写代码,通过可视化界面就能搞定!
2. 从入门到精通:三步搞定数据爬取
第一步:安装和基础设置
在Chrome商店搜索"Automa"并安装,点击浏览器右上角的Automa图标,然后创建新的工作流。
第二步:设计工作流程
以爬取电商产品数据为例,核心步骤包括:设置起始页面,添加循环块处理分页,提取商品信息,最后导出数据。
第三步:运行和优化
为了确保数据采集的稳定性和效率,需要设置合理的延迟时间,等待页面加载完成。同时要添加错误处理机制,防止意外中断。
3. 实战案例:小红薯热帖数据采集
Automa 核心概念说明
在开始实战之前,让我们先了解一下 Automa 的几个核心概念:
- 工作流(Workflow): 整体任务流程的容器
- 块(Block): 每个具体功能模块
- 选择器(Selector): 定位网页元素的工具
- 变量(Variable): 存储临时数据
- 触发器(Trigger): 启动工作流的条件
- 数据表(Table): 收集整理数据的表格
案例分析
以小红薯热帖数据采集为例,我们来看看如何使用Automa采集热门笔记数据。核心就是模仿我们自己手动采集的过程,然后使用Automa来实现自动化。
首先我们来看看如何使用Automa采集小红书数据。整个流程分为以下几个步骤:
创建工作流并配置触发器
创建一个名为"小红书数据收集"的工作流。在触发器(Trigger)中添加一个名为"key_word"的参数,用于输入要搜索的关键词。这个参数的默认值设为"独立开发者"。
打开目标页面并搜索
使用"新建标签页"(New Tab)块打开小红书首页(https://www.xiaohongshu.com/explore)。然后使用表单(Forms)块来定位搜索框。
如何选择到元素
-
在dashboard侧边栏中找到如下图标,即可进入页面选择元素
-
在采集页面上选择元素,然后点击右上角的复制按钮
-
将上一步选择的元素粘贴到Automa的Css Selcetor中
循环采集数据
使用循环元素(Loop Elements)块遍历笔记列表。我们需要获取笔记列表的选择器:
- 在笔记列表页面,右键点击任意一个笔记封面
- 用Automa选择器获取工具获取选择器".note-item .cover"
打开帖子并获取详情
在循环中,我们需要点击每个笔记进入详情页面。这里需要注意以下几点:
-
等待页面加载 使用"等待元素"(Wait Element)块,确保页面完全加载:
-
点击笔记封面 使用"点击元素"(Click Element)块,点击每个笔记封面:
-
等待详情页面加载 使用"等待元素"(Wait Element)块,确保详情页面完全加载:
在每次循环中采集的数据选择器获取方法:
- KOL名称: 右键点击作者名称 > 检查 > 复制选择器 "a.name"
- 笔记标题: 选择器 "div#detail-title"
- 笔记内容: 选择器 "#detail-desc > .note-text > span"
- 互动数据:
- 点赞数: ".left > .like-wrapper > .count"
- 收藏数: "#note-page-collect-board-guide > .count"
- 评论数: ".chat-wrapper > .count"
导出数据
最后使用导出数据(Export Data)块,将采集到的数据以CSV格式导出。
小技巧
- 如果选择器不准确,可以尝试使用XPath
- 添加适当的延时等待页面加载
- 定期检查选择器是否失效
- 建议每次采集不超过20条数据
- 控制采集频率,不要频繁采集
整个工作流通过合理的延时控制和选择器定位,可以稳定地完成数据采集任务。同时通过参数化配置,方便根据不同需求调整采集关键词。
4. 常见问题与解决方案
动态选择器详解
在采集多个相似元素时,我们经常需要使用动态选择器。让我们通过一个实际的例子来学习。
以这个选择器为例:
!!.note-item:nth-child({{loopData.loopId.$index+1}}) .cover
这个选择器看起来很复杂,让我们一步步拆解:
!!
前缀是Automa的特殊语法,表示使用JavaScript选择器而不是CSS选择器,让我们能够使用更灵活的选择方式。
.note-item
选择class为"note-item"的元素,这通常是列表中的每个帖子容器。
:nth-child()
是CSS的子元素选择器,用于选择特定位置的子元素,括号内可以是数字或表达式。
{{loopData.loopId.$index+1}}
中的{{}}
是Automa的变量语法,loopData.loopId.$index
是循环中的当前索引(从0开始),+1
是因为:nth-child
从1开始计数。
.cover
选择最终目标元素,在这个例子中是帖子的封面图。
在循环块中这样配置:
{ selector: "!!.note-item:nth-child({{loopData.loopId.$index+1}}) .cover", timeout: 5000 }
为什么要这样写?因为它能实现动态定位:
- 第1次循环:
.note-item:nth-child(1) .cover
- 第2次循环:
.note-item:nth-child(2) .cover
- 第3次循环:
.note-item:nth-child(3) .cover
- 以此类推...
这样可以避免固定选择器的问题:
/* 错误写法 */ .note-item .cover // 会选中所有cover元素 /* 正确写法 */ !!.note-item:nth-child({{loopData.loopId.$index+1}}) .cover // 精确选择当前循环的元素
如果你不确定选择器是否正确,可以在浏览器控制台测试:
// 假设当前是第3次循环 document.querySelector('.note-item:nth-child(3) .cover')
也可以使用Automa的日志功能:
{ type: "log", message: "当前选择器: .note-item:nth-child({{loopData.loopId.$index+1}}) .cover" }
通过这种动态选择器的方式,我们可以准确定位每次循环中的目标元素,避免选择到错误的元素,提高工作流的稳定性和准确性。选择器的编写是数据采集中最关键的部分之一,合理使用动态选择器可以让你的工作流更加健壮和可靠。
写在最后
通过Automa,我们可以轻松实现小红薯热门内容的自动化采集和分析。无需编程知识,只要掌握正确的配置方法,就能获取稳定可靠的数据支持,助力内容创作和运营决策。
想要获取更多实用技巧?欢迎:
关注我们的教程更新
获取独家工作流模板,公众号回复"automa",即可获取下载链接。
你还希望了解哪些数据采集和自动化相关的教程呢?欢迎在评论区留言,我们一起交流学习!
记得点赞收藏,下期见!