资讯动态

开源无代码爬虫机器人Maxun:从Docker部署到快速采集实操

发布时间:2026/9/26 14:21:54 来源:尧图企业网站定制
做了这么多年数据采集我越来越觉得爬虫这个活儿真正技术含量高的地方永远是少数更多的时间都花在了重复劳动上写选择器、调登录态、处理翻页、定时任务挂了再重跑。所以当我第一次看到 Maxun 的时候第一反应就是这不就是把 Playwright 封装成点鼠标的无代码工具吗但用了一阵之后发现它的价值恰恰藏在这层封装里——它把我写的脚本变成了业务人员也能自己维护的爬虫机器人。所谓爬虫机器人就是用可视化方式在目标网页上点选元素、自动生成抓取规则、并且能按计划持续运行的数据采集工具。Maxun 是这类工具里比较少见的开源自托管产品既能满足不用写代码的需求又能把数据和规则都放在自己的服务器上。这篇文章就围绕 Maxun 项目本身从部署到上手实操把整个流程完整讲一遍适合想快速实现数据采集、又不想长期维护爬虫代码的人。1. 为什么需要 Maxun先把爬虫开发的老大难说清楚1.1 写爬虫的时间到底都花在了哪里先聊一个很多人都有的体会。你接到一个需求比如抓某个电商网页上的价格和库存听起来特别简单requests 请求一下页面再用 xpath 或者正则把数据抠出来半小时能跑通。但真实的情况是你很快会撞上几个常见问题。第一个问题是页面是动态渲染的。现在前端的单页应用越来越多数据是 JavaScript 异步加载的直接 requests 拿到的是一个空壳 HTML根本解析不到内容。这时候你就得上 Selenium、Playwright 这类浏览器自动化工具。第二个问题是登录态和翻页。很多数据源需要登录你需要维护 session、处理 cookie、模拟点击下一页每一步都是状态管理。第三个问题是反爬。稍微有点反爬意识的网站会校验请求头、加验证码、限制频率你的脚本隔几天就莫名失效了。最消耗精力的还不是写出来而是维护。网站改版一次CSS 选择器、xpath 全部失效你的脚本就要从头排查一遍。所以我自己一直有个观点爬虫的开发成本其实只占小头维护成本才是大头。如果一个工具能把这些重复的维护工作降低一半那它的价值就已经很明显了。1.2 Maxun 是什么开源的无代码爬虫机器人平台Maxun 本质上是一个开源的无代码网页抓取平台底层技术栈是 Node.js 生态浏览器自动化内核用的是 Playwright。它的核心逻辑是你不需要写代码只需要在网页上点击你想要的元素系统会自动生成对应的抓取规则然后把多个规则组合成一个机器人这个机器人可以反复运行、定时运行最终产出结构化的表格数据。我在项目里主要用它做三件事一是竞品价格和库存监控二是定期采集行业数据合并成报表三是帮业务同事做自助取数。以前业务同事提数据需求我需要专门排期写脚本现在只要不是特别复杂的页面业务自己在页面上点几下就把机器人建好了数据导出成 CSV 发过去就行。更关键的是Maxun 支持自托管部署。你可以把它装在公司的内网服务器上或者自己的一台云主机上。数据不外流、规则在自己手里、不按账号收订阅费。这一点在对比商用无代码抓取平台的时候优势非常明显。1.3 和手写爬虫、商用工具相比到底怎么选先放一张我自己整理的对比表方便你快速做判断维度手写 Scrapy / Playwright商用无代码平台Octoparse、Browse AI 这类Maxun 开源无代码上手门槛高需要会编程低但平台有学习成本低且开源生态资料多开发速度慢尤其是复杂页面快快录制点选即可定制能力最强什么都能调中等平台限制多中等但可以改源码成本开发人力 服务器订阅费通常不便宜开源免费 自付服务器数据安全自主可控数据会经过第三方平台自主可控部署在自己服务器维护难度高脚本易失效平台方维护规则社区维护核心逻辑稳定你可能会问既然它这么好为什么还有人手写爬虫因为 Maxun 这类可视化工具的局限也很清晰它适合中等规模、中低频的采集任务不适合做高并发分布式爬虫也不适合处理特别复杂的反爬对抗。如果目标是规模化采集还是得靠代码方案。但如果你只是想早点把数据拿到手或者让业务团队能「自助服务」那 Maxun 这条路是可行的。2. 部署方式选型与准备Docker 还是源码2.1 Docker 部署和源码部署怎么选Maxun 的部署方式我实际用下来主要是两种Docker 容器部署和源码本地部署。先说我推荐哪个绝大多数人都用 Docker。理由很简单第一Docker 把 Node.js 运行环境、Chromium 浏览器、各种依赖库都打包在了一起你不用在自己机器上折腾环境变量和系统依赖第二升级版本的时候拉一个新镜像重新启动就行不用把旧环境一层层拆开第三隔离性好不污染你服务器上已有的环境装完不想用了直接把容器删掉干净利落。源码部署适合什么情况呢我自己的经验是如果你打算二次开发比如修改界面文案、嵌入自己的认证系统、或者深入看它生成 locator 的逻辑那你确实需要把代码在本地跑起来调试。源码方式能让你直接改代码、打断点还能用 IDE 调试这一点容器方式做不到。我的建议是先 Docker 跑起来用着真到了需要改代码的时候再换源码方式不要第一步就折腾源码。2.2 环境要求与资源评估先说配置底线。如果你只是在一台云服务器或者虚拟机里跑最低建议是 2 核 4G 内存。但注意Maxun 运行机器人时会启动 Chromium 浏览器实例一个实例大概就要占几百 MB 内存如果同时跑多个机器人4G 内存会非常紧张。我实际用了段时间的体会是2 核 8G 是舒服的起步配置如果你打算定时跑很多个机器人建议 16G 以上。磁盘方面镜像大概 1G 到 2G加上运行产生的浏览器临时文件和数据库数据留 10G 到 20G 空间比较稳妥。网络方面这台服务器必须能正常访问公网尤其要能访问你要采集的目标网站。如果你要抓的是国内站点优先把服务器放在国内节点如果抓海外站点就放海外节点。这个地域关系还挺重要隔着一整个地球去抓页面加载速度和稳定性都会受影响。Docker 的安装我就不多啰嗦了直接贴命令curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh sudo systemctl enable --now docker docker version如果你用的是国内云服务器安装 Docker 之后建议顺手配一下镜像加速这一步能省不少拉镜像的时间。3. 完整部署实操从写配置文件到跑通第一个机器人3.1 一份能直接用的 Docker Compose 配置Maxun 项目的部署结构我参考官方仓库和社区常见实践整理了一份通用的 docker-compose 配置。它包含三个服务主应用、PostgreSQL 数据库、Redis 缓存。如果你想用官方仓库里的默认编排文件直接以官方 README 为准如果官方文档还没更新或者你想自己控制配置下面这份可以拿来直接用。version: 3.8 services: maxun: image: ghcr.io/getmaxun/maxun:latest container_name: maxun restart: unless-stopped ports: - 3000:3000 environment: - DATABASE_URLpostgresql://maxun:maxunpostgres:5432/maxun - REDIS_URLredis://redis:6379 depends_on: - postgres - redis volumes: - maxun-data:/app/data postgres: image: postgres:16-alpine container_name: maxun-postgres restart: unless-stopped environment: - POSTGRES_USERmaxun - POSTGRES_PASSWORDmaxun - POSTGRES_DBmaxun volumes: - postgres-data:/var/lib/postgresql/data redis: image: redis:7-alpine container_name: maxun-redis restart: unless-stopped volumes: - redis-data:/data volumes: maxun-data: postgres-data: redis-data:简单解释一下几个关键点。数据库我用 PostgreSQL 而不是默认的本地文件存储是因为正式使用时数据可靠性更重要PostgreSQL 的数据有持久化文件容器重启、重建都不会丢数据。Redis 主要用来暂存任务队列和执行状态可以让调度和并发更稳。所有数据目录都挂载到了命名卷这是防止容器删除后数据全没的关键操作。3.2 拉镜像、写配置、一条命令启动实际操作的时候建议你先把配置文件保存到服务器上的/opt/maxun目录然后在这个目录下执行命令mkdir -p /opt/maxun cd /opt/maxun # 把上面的 docker-compose.yml 内容写入当前目录 docker compose up -d第一次启动会拉镜像可能需要几分钟网速慢的话耐心等。启动完成后用下面几条命令看状态docker compose ps docker compose logs -f maxun看到日志里出现类似server started、监听 3000 端口的信息就说明启动成功了。接着打开浏览器访问http://你的服务器IP:3000按页面提示注册一个本地账号。第一个注册的账号一般会拥有管理员权限一些项目设置和用户管理都要靠它所以账号密码记得存好。到这里Maxun 就算部署完成了。接下来我会直接在平台上创建一个抓取机器人的完整流程这部分才是很多人最关心的。3.3 源码部署流程二次开发备选如果你确定要走源码路线流程大概是这样的。先把项目 clone 下来git clone https://github.com/getmaxun/maxun.git cd maxun pnpm install前端和服务端都需要编译我先按官方默认的开发模式说明。机器上需要提前装好 Node.js 18 以上版本和 pnpm。安装依赖之后把根目录的.env.example复制成.env填写数据库连接等配置然后启动pnpm run dev源码方式启动后同样是访问 3000 端口。这里我要补一句实在话源码部署的坑明显比 Docker 多主要是在不同系统上安装 Playwright 的浏览器依赖时容易报错比如缺一堆系统库。所以我建议没有二次开发需求的人不要选这条路。4. 核心功能实操点几下鼠标一个爬虫就建好了4.1 新建机器人与录制抓取规则部署完成之后打开 Maxun 的 Dashboard界面虽然是英文的但逻辑不复杂。第一步点击页面上的New Robot然后给它起个名字比如竞品价格监控。第二步填上要抓取的目标 URL。点击进入后平台会在内置浏览器里打开这个页面你看到的不是静态截图而是一个真正的浏览器窗口可以直接在网页上操作。第三步就是核心操作了——点选元素。比如我想抓页面上显示的商品标题我直接用鼠标点击标题文字Maxun 会高亮这个元素并自动生成一个定位器。然后我给它定义一个字段名比如title再点击价格元素定义字段名price。这其实就是可视化创建抓取字段的过程背后的原理是帮你生成 Playwright 的 locator。第四步如果页面有列表需要循环抓取比如整页的商品列表可以先选中第一项然后点击列表识别按钮Maxun 会自动识别同类元素把单条记录扩展成列表循环。这一步大多数情况下识别得都很准少数结构复杂或者加载不规律的页面需要手动微调一下等待时间。规则配置完成后保存机器人然后点击运行。你可以在运行记录里看到机器人打开浏览器、执行操作、抽取数据的全过程。运行结束后数据会自动汇总成表格支持导出 CSV 或者 JSON。4.2 等待、登录态与调度几个容易忽略的设置第一次上手的人最容易忽略的就是页面加载等待时间。很多目标网站是异步加载的内容在页面打开之后 1 到 3 秒才慢慢出来。如果机器人运行速度太快页面还没渲染完就去找元素结果自然是抓不到数据。解决办法是在机器人设置里给关键步骤加上延时比如抓取前等待 3 秒或者设置等待元素出现这个条件页面加载完再继续。登录态也是绕不开的点。如果你要抓的数据需要登录账号操作方式是在录制机器人时先在页面里真实地输入账号密码、完成登录然后再点选目标元素。Maxun 会把登录过程也一并录制进机器人的执行流程后续每次运行都会先登录再抓数据。这里我提醒一句不要在机器人里保存你个人主力账号的密码最好单独注册一个低权限的采集专用账号安全上会稳很多。调度功能方面Maxun 支持给机器人配置定时运行。如果你用的是容器部署也可以完全不依赖平台自带调度直接用系统 crontab 去调用运行接口或者通过反代加一层定时触发器。我个人更习惯在容器方案里用平台自带的调度简单直接。4.3 抓取规则的本质它到底替你做了什么很多不写代码的人用 Maxun 会觉得特别神奇我在网页上点了一下它怎么就知道该抓什么了本质上它做的其实是把你手动作出的选择翻译成浏览器自动化的指令。你可以把网页理解成一棵树每个元素都是树上的节点节点的位置可以通过路径来描述。手动写的 xpath 就是一条路径比如HTML 下第三个 div 里的第一个 li 的链接Maxun 的可视化点选就是在帮你生成一条类似的路径只是它生成得更稳健、更智能。它会综合元素本身的文本内容、属性、结构层级来构造定位器所以抗页面微调的能力会比手写的硬路径强一些。但我也要泼一盆冷水它再智能也是基于 DOM 结构的网页如果彻底改版结构大变规则同样会失效。所以不要以为有了 Maxun 就一劳永逸。正确的使用姿势是把它当成一个降低维护成本的工具——网站小改你不需要管大改的时候重新点选一次几分钟就修好了。比起手写脚本从头排查这已经轻松太多了。5. 常见问题与排查技巧实录5.1 部署和运行中的典型问题排查我把实际踩过的一些坑整理成了速查表然后逐个展开说方便你遇到问题的时候直接对号入座。现象最常见原因解决办法容器一直重启数据库连不上或端口冲突查看日志检查 DATABASE_URL 与端口占用打开机器人编辑器白屏内存不足或浏览器进程崩溃加大内存关掉其他容器运行结果全部为空元素没加载完 / 定位器失效增加等待时间重新录制规则抓到的数据是乱码页面老编码不是 UTF-8检查页面编码转换导出结果服务器负载飙升多个 Chromium 同时运行降低并发错开定时任务数据一直重复上次运行数据未清理开启去重或运行前清空数据集第一个问题容器一直重启。这种情况九成是数据库连接失败最常见的原因是 DATABASE_URL 里的密码和 postgres 容器的 POSTGRES_PASSWORD 对不上或者 postgres 还没就绪的时候 maxun 就去连了。处理方式很简单先docker compose logs maxun看日志里面一般会直接告诉你连不上哪个服务然后再检查配置。第二个问题机器人编辑器打开白屏。我在 4G 内存的服务器上遇到过好几次。原因很简单Maxun 主服务自己启动了一个 Chromium 用于渲染编辑页面服务器内存不足直接把它挤崩了。解决方法是给服务器加内存或者临时docker compose stop掉不用的容器把内存腾出来。第三个问题运行结果为空。新手最容易在这翻车。绝大多数原因就是页面加载慢——机器人已经在页面上找元素了但内容还没渲染出来。我建议在关键操作前无条件加上 3 到 5 秒的等待时间。如果你加了等待还是空那就是定位器彻底失效了直接回到编辑器里重新点选一次元素。第四个问题数据重复。Maxun 每次运行默认会把数据追加到同一数据集如果定时任务没配好去重很容易出现同一批数据反复出现。我的习惯是每个任务开启运行前清空历史数据或者自己去重保证表格里永远是最新一批结果。5.2 反爬、资源占用和合规提醒再聊几个数据库文档里不会写的东西。反爬是绕不开的现实问题。Maxun 内置的 Playwright 浏览器指纹和真人还是有一些差异如果目标网站的反爬策略比较激进你的机器人很容易被识别出来。我试过几种缓解手段比如限制抓取频率把每个请求间隔调到 5 秒以上比如错峰运行不要在目标网站高峰时段去抓再比如尽量模拟真人路径先滚动页面再点元素而不是一上来就暴力采集。这些操作虽然不能保证百分百绕过但至少能明显降低被封的概率。资源占用也是要提前心里有数的。每次运行机器人都会拉起一个完整的 Chromium 实例多个机器人同时跑的时候CPU 和内存都可能瞬间飙升。所以建议定时任务尽量错开执行不要把所有机器人一下子全启动。我也见过有人为了省钱买了台 2G 内存的小机器结果运行一个机器人就卡死最后还是乖乖升级配置。基于我的经验4G 是底线8G 是舒适区。最后是数据合规问题。这个必须提醒到位任何爬虫工具都只是技术手段用的时候要尊重目标网站的robots.txt声明和用户协议控制采集频率不要影响对方站点的正常访问。涉及个人信息的批量采集更要格外谨慎明确数据用途和合规边界。我的原则是公开数据合理采集加密数据和需要登录的敏感数据一概不碰。这不是客套话是保护自己也是保护业务。6. 边界与扩展自托管数据管线的更多组合6.1 明确一下它能做什么、不能做什么用了这么久我对 Maxun 的定位有个清晰判断它是一个中低频、中小规模的采集利器不是高并发生产级爬虫系统。适合做什么一是各行业的竞品监控和价格提醒每天抓一次完全够用二是内部数据报表的自动采集比如每天拉取几个公开数据源生成日报三是帮业务同事做快速数据调研不用等开发排期自己就能跑数据四是可以和一些 AI 工具配合使用把抓取结果作为语料或者训练数据。不适合做什么大规模分布式抓取、需要复杂数据清洗的流水线、对抗强反爬的场景这些还是交给代码方案去做。另外如果你要抓的数据关系很复杂涉及多页面跳转、条件判断、大量正则替换可视化配置会变得非常繁琐这时候手写脚本可能反而更简单。6.2 和开源生态组合能玩出不少花样我最近比较喜欢做的事是把 Maxun 和开源工作流工具串在一起。Maxun 负责把页面数据变成结构化表格导出 CSV 或者 JSON 之后可以丢给像 n8n、Dify 这类开源工具去做后续的加工、告警和推送。比如我搭过一条任务Maxun 每天自动抓取几个公开页面的数据导出后由工作流判断价格波动超过阈值就发企业微信通知。整个过程都是自托管数据不出自己的服务器。如果你对本地部署 AI 大模型有兴趣也可以做类似的组合Maxun 抓回来的非结构化页面内容喂给本地部署的模型做信息提取或者摘要等于搭建了一条采集 分析的私有数据流水线。不需要把数据交给任何第三方这是开源工具组合的一大优势。我在实际使用中最深刻的体会是不要一上来就追求复杂的架构和高并发先把一条最小的链路跑通——一台服务器、一个 Docker、一个机器人能定时出数据、能导出表格就已经解决了大部分实际需求。等跑熟了再慢慢加调度、加告警、加工作流。工具是死的你的数据流程是活的它应该为你服务而不是反过来让你去维护它。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑