☰
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容
2026/10/10 23:59:52 网站建设 项目流程

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

1. 认识影刀:什么场景该用RPA采小说数据

起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化:榜单页一轮抓取→详情页逐本打开采集→章节页选择性下载。

和前面几个案例不同的是,起点的小说详情点击会打开新标签页。影刀处理新标签页的固定模式:点击前先记下原网页对象→点击后"获取已打开的网页对象"拿到新页面的对象→在新页面操作完→关闭新标签页→回到原页面继续循环下一个。三个网页对象变量不要混用:

榜单页对象 = 获取已打开的网页对象() For 小说 in 榜单小说列表: 详情页对象 = None # 新标签页 点击小说链接 # 这会打开新标签页 详情页对象 = 获取已打开的网页对象(匹配方式="当前选中的网页") 提取详情页数据... 关闭标签页(详情页对象) 切换回 榜单页对象 # 继续循环 End For

2. 元素定位四合一:分类榜单的表格型页面

起点分类榜单是标准表格布局,结构极其规整。这反而是最容易踩坑的——规整意味着所有行class一样,元素定位时容易误匹配。

榜单页每行包含9个字段:排名/书名/作者/分类/字数/收藏/月票/状态/更新时间。定位时:

  • 用table.rank-table tbody tr定位行元素(不要选整个table,取其tbody内的tr)
  • 书名在tr td:nth-child(2) a,作者在td:nth-child(3)
  • 字数/收藏/月票这些数字字段在各自的td中,有些带单位(万字/万),取值时要去掉单位
  • 状态字段(连载/完结)有个小图标+文字的组合,取textContent即可

关联父元素法:把每一行tr作为父元素,然后关联找到内部的书名a标签(获取关联元素),拿到书名文本和详情页链接。一个tr下面的td各取所需,不用重复定位整行。

正则应用:字数如"120.5万字"需要转成数值,正则\d+\.?\d*匹配数字部分。

3. 变量与数据类型:小说数据结构

小说榜列表 = [] 单本小说 = { "rank": "", # 排名 "title": "", # 书名 "author": "", # 作者 "category": "", # 分类 "word_count": "", # 总字数 "favorite": "", # 收藏数 "monthly_ticket": "",# 月票 "status": "", # 连载/完结 "update_time": "", # 最后更新时间 "intro": "", # 简介(从详情页获取) "tags": [], # 标签(从详情页获取) "total_chapters": 0, # 总章节数 "vip_chapters": 0, # VIP章节数 "url": "" # 详情页地址 }

数据表格在影刀中创建:新建数据表格(["排名","书名","作者","字数","收藏","月票","状态","更新时间"])。数据表格比Excel轻量,适合采集过程中的临时存储。写入方式:数据表格.追加行([排名, 书名, 作者,...])。全部采集完再一次性导出到Excel。

4. 流程控制:三层循环+区间翻页

分类榜单有几十页,每页几十本,加上详情页是第三层。三层的流程控制要格外小心变量覆盖。

分类URL = "https://www.qidian.com/rank/..." 打开网页 分类URL 总采集数 = 0 目标采集数 = 500 # 本次计划采集500本 已采集书名 = [] # 去重用 无限循环: # 翻页循环 获取相似元素 ".rank-table tbody tr" For tr in 相似元素: # 行循环 If 总采集数 >= 目标采集数: 退出所有循环 End If 排名 = 关联获取 tr下 td:nth-child(1) 的text 书名 = 关联获取 tr下 a.rank-book-name 的text If 书名 in 已采集书名: Continue End If 作者 = 关联获取 tr下 td:nth-child(3) 的text 字数 = 关联获取 tr下 td:nth-child(4) 的text 收藏 = 关联获取 tr下 td:nth-child(5) 的text 月票 = 关联获取 tr下 td:nth-child(6) 的text 状态 = 关联获取 tr下 td:nth-child(7) 的text 更新 = 关联获取 tr下 td:nth-child(8) 的text 书名链接 = 关联获取 a.rank-book-name 的href属性 # 详情页(新标签页) 原有页面 = 获取已打开的网页对象() 点击 书名链接 详情页 = 获取已打开的网页对象(匹配="当前选中") 提取 简介/标签/章节信息... 单本小说 = {排名, 书名, 作者, ...} 小说榜列表.append(单本小说) 已采集书名.append(书名) 总采集数 += 1 关闭标签页(详情页) 切换回 原有页面 # 继续循环下一本 End For 点击下一页 If 下一页元素.class 包含 "disabled": 退出无限循环 End If If 总采集数 >= 目标采集数: 退出无限循环 End If End 无限循环

翻页判断和之前一样:class里不勾disabled,到最后一页时disabled让元素校验失败,走找不到元素分支退出。

5. 网页自动化:新标签页处理是核心

起点每本书的详情页是点击书名打开的新标签页。影刀处理流程:

点击前:先原有页面 = 获取已打开的网页对象()把榜单页存下来。

点击后:用详情页 = 获取已打开的网页对象(匹配方式="匹配当前选中的网页")拿到新打开的详情页。注意这里的匹配方式不能是"按标题/网址",因为不知道每本书的具体URL。

操作详情页:所有用"网页对象=详情页"的指令都在新页面执行。提取书名/简介/标签/章节等字段。

关闭返回:操作完用关闭标签页(详情页)→回到榜单页对象→继续循环下一行。

一个关键踩坑:如果网络慢,点击后新标签页还没完全加载,获取已打开的网页对象会拿到旧页面。解决方法:点击后等待(2)或等待元素出现(详情页的某个特征元素, timeout=10),确认新页面加载完再获取对象。

6. 数据处理:榜单数据对比分析

数据分析分两个维度:

单日榜单快照:按收藏数降序排列,看头部作品。按字数分类统计(100万字以下/100-300万/300万以上)。按状态分(连载vs完结)算比例。

跨日排行榜变化监控:每天都抓一次榜单,对比前后两天的排名变化:

  • 新增上榜:昨天不在今天在
  • 掉榜:昨天在今天不在
  • 排名跃升(上升超过10名)
  • 排名暴跌(下降超过10名)

用Excel的VLOOKUP做两个日期的关联比对。影刀流:读昨天Excel→读今天Excel→数据表格做匹配→标记变化类型→写入变化报告。

7. 鼠标键盘图像:榜单页操作较少

起点榜单页是比较干净的HTML页面,元素定位都能命中的话不需要图像操作。但是某些分类页有"加载更多"按钮(非标准分页),这时候:

  • 点击"加载更多"按钮后等待1-2秒
  • 需要单独处理未找到元素的情况:Try: 点击加载更多 Catch: Continue(没有更多就跳过)
  • 如果按钮位置在可视区域外,影刀会自动滚动到按钮位置再点击,不需要手动滚动

8. 进阶技能:章节结构分析+内容摘要

进入详情页后,可以进一步获取章节信息。起点章节列表是单独的一个tab页,URL格式通常为https://www.qidian.com/book/{bookId}/catalog。

获取章节信息的目的不是爬全部小说内容(那是版权红线),而是做市场分析:

  • 总章节数:看作品连载进度
  • VIP章节数:看付费转化节点
  • 章节平均字数:每章字数稳定性
  • 更新频率:最近10章的发布时间间隔

章节列表页面有大量分页,建议只采集前3页和最后1页的章节信息。前3页看出书前期节奏,最后1页看最新章节更新频率。

9. 平台实战:起点中文网 + Excel报告

起点采集实战

步骤:选中基准分类(如"玄幻")→抓取前10页榜单(每页20本=200本)→逐个打开详情页获取补充信息→写入Excel。

单次采集200本书,每本详情页花费2-3秒,总耗时约15-20分钟。严格控制速度,不要对服务器造成压力。

Excel市场分析报告

在Excel中生成摘要:

  • 头部作品Top 10表格
  • 分类下连载率(连载占比vs完结占比)
  • 平均字数和收藏分布
  • 新书入榜趋势(同比上周)

home.linyan.cloud 提供了起点小说数据采集的完整模板和分析报告生成器。

10. 系统联动:采集→分析→报告→推送

影刀采集 200本基本信息 → Excel原始数据 Python分析模块(pandas): - 按分类汇总字数分布 - 计算收藏-月票相关性 - 识别新锐作品(短期收藏增速Top) → 生成分析报告Excel + 摘要文本 影刀读取摘要 → 飞书定时推送

计划任务设置:每周一早上8点自动运行一次,采集一周的榜单变化。分析报告自动归档到D:/book_reports/目录。

11. 工程化规范

采集频率:单次运行不要超过500本书。每本书详情页操作后等待2-3秒。

去重策略:书名作为去重主键不够(可能重名),用"书名+作者"联合主键。

新标签页资源管理:每处理完一个详情页就关闭标签页,不要堆着几十个标签。实测超过15个标签页时浏览器内存占用飙升,影刀操作可能卡顿。

异常处理:

  • 详情页加载超时→记入失败列表→跳过继续下一本
  • 章节页被反爬拦截(验证码)→暂停整个流程,通知人工处理
  • 网络断开→在当前book处理完后优雅退出,不要丢数据

日志规范:每10本书打一次日志:"进度: 10/200, 当前: 《xxx》"。

12. 速查表 / 常见报错

报错原因解决
获取已打开的网页对象失败新标签页未完全加载点击后加等待或等待特征元素出现
元素校验失败(详情页)部分书详情页结构不同降低属性匹配门槛,只用短CSS选择器
新标签页操作后循环回到旧页面时失败网页对象变量混淆操作新页面前先存旧页面对象
采集速度太慢每本书详情页交互过多能走API就走API,不用逐页解析
排行榜数据不完整部分行有隐藏/折叠检查DOM里隐藏的display:none元素
字数变科学计数法长数字写入Excel设置文本格式的列
Cannot read property of null部分字段在详情页可能不存在加try-except默认值兜底

采集参数建议:单次运行上限500本,每本间隔2-3秒,每小时不超过300次详情页请求。


内容标签:#影刀RPA #起点中文网 #小说数据采集 #新标签页处理 #Excel报告 #飞书通知
作者:林焱

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询