影刀RPA新手教程:猫眼票务自动化完全指南——票房数据采集、影院排片分析与舆情监控

📅 2026/7/7 7:07:39 👁️ 阅读次数 📝 编程学习
影刀RPA新手教程:猫眼票务自动化完全指南——票房数据采集、影院排片分析与舆情监控

影刀RPA新手教程:猫眼票务自动化完全指南——票房数据采集、影院排片分析与舆情监控

我在某电影发行公司做数据分析时,每天都在猫眼上查票房、截图排片、整理舆情,对着几十部电影的页面来回切。后来学了影刀RPA,一套流程就能把猫眼上的票房数据、影院排片、观众评价全部自动采集下来,汇总成Excel报表,老板直夸效率高。

认识影刀与安装

影刀社区版免费下载,安装过程标准三连:下载安装包→双击安装→按提示完成。安装后先做两件事:一是去浏览器插件里装上Chrome插件(操作网页自动化必需),二是熟悉编辑器界面。编辑器左侧是指令面板,你可以搜"等待"“点击”"获取文本"等关键词快速找到需要的指令,拖到画布上连上线就能运行。不用写代码也能做出完整的自动化流程。

元素定位四合一:XPath + CSS + 正则

猫眼的页面结构比较清晰,元素定位难度适中:

//div[@class='movie-name']/span/text() 电影名称 //span[@class='stonefont score']/text() 评分 //div[@class='box-office']/span[@class='num'] 票房数字 //ul[@class='session-list']/li//span[@class='time'] 排片时间 //div[@class='comment-content']/text() 观众评论内容 //span[contains(@class,'tag') and contains(text(),'好评')] 好评标签

CSS选择器提取结构化数据:

.movie-item > .info > .title 电影标题 .box-office .data .stonefont 票房数据(猫眼用特殊字体) .comment-item:not(.hide)可见评论 .schedule-tabletd:not(.header)排片表数据行

正则表达式在猫眼特别重要——猫眼的数字用的StoneFont加密字体,页面上看到的是数字但源代码里是乱码。解决方法是用图像识别的OCR来识别数字,或者用正则[\uE000-\uF8FF]+匹配这些特殊字符再映射为真实数字。另外从电影标题里提取上映日期用正则(\d{4}-\d{2}-\d{2})

变量与数据类型

票房数据核心结构:

movie_box_office={'movie_id':'MY20240615001','name':'流浪地球3','daily_box':25800000.00,'total_box':3526800000.00,'screening_rate':28.5,'attendance_rate':18.2,'score':9.2,'comment_count':85600,'positive_rate':87.3}

列表存储一批电影的票房数据,字典存单个电影的详细信息。数字类型用于票房、排片占比、上座率等指标。字符串存电影名称和评论内容。JSON解析猫眼H5接口返回的票房数据——接口返回JSON格式,用"获取JSON节点值"按路径提取各项数据。

流程控制

票房采集主流程:

拼多多店群自动化报活动上架!


读取待监控电影列表 ForEach movie in movie_list ├─ 打开猫眼电影详情页 ├─ 等待页面加载 ├─ 采集基础信息(片名、评分、类型、时长、主演) ├─ 采集票房数据(日票房、累计票房、排片占比、上座率) ├─ If 评分 < 7.0 │ └─ 标记"口碑预警" ├─ If 排片率 < 10% │ └─ 标记"排片预警" ├─ 采集热门评论(前20条) ├─ 情感分析评论(正面/负面比例) └─ 写入Excel

If条件判断用于自动预警——评分跌破阈值、排片率大幅下降、差评比例升高时自动提醒。Try-Catch包在每个电影的采集外面,某个电影页面加载失败不影响其他电影。

网页自动化

猫眼的反爬措施一般,但数据加载是异步的。等待策略用"等待元素出现"等票房数字显示——这些数字是Ajax异步加载的,页面加载完不等于数据加载完。我一般等.box-office .num这个元素出现(最长等15秒),等到了说明数据已经渲染好。

弹窗不多,主要是"下载App"和"登录"引导弹窗。下载App弹窗点关闭按钮就能关,登录弹窗按Esc。如果弹窗挡住了数据采集,先处理弹窗再继续。

翻页在评论采集时会用到。猫眼的评论列表是滚动加载的(翻到下面自动加载更多),不是传统翻页。处理方式是用懒加载方案——持续向下滚动,用评论ID去重,直到没有新评论出现。

collected_comments=[]last_count=0whileTrue:scroll_to_bottom()wait(2)comments=get_similar_elements('评论项')current_count=len(comments)ifcurrent_count==last_count:break# 没有新评论加载![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/40ee931d0a1b4e768c99d73df30daba3.png#pic_center)forcommentincomments[last_count:]:text=comment.find_element('.comment-content').text comment_id=comment.get_attribute('data-id')ifcomment_idnotincollected_comments:collected_comments.append(comment_id)process_comment(text)last_count=current_count

数据处理

Excel用来汇总和输出。每天的票房数据写入Excel日报表,按电影分行,列包括日期、片名、日票房、累计票房、排片率、上座率、评分、好评率。

批量写入二维列表提高效率:

report_data=[['日期','电影','日票房(万)','累计票房(亿)','排片率(%)','上座率(%)','评分','好评率(%)']]formovieinmovies:report_data.append([today,movie['name'],round(movie['daily_box']/10000),round(movie['total_box']/100000000,2),movie['screening_rate'],movie['attendance_rate'],movie['score'],movie['positive_rate']])write_excel_range(report_data,'票房日报','A1')

文本处理用于舆情分析——从评论中提取高频词、判断情感倾向、识别提及的演员和剧情点。用简单的关键词匹配做情感判断:好评词汇表(好看、震撼、推荐、精彩…)和差评词汇表(烂片、失望、退票、无聊…),统计两边的比例。

JSON解析猫眼开放API的数据——获取实时票房、排片、影院信息等结构化数据。

鼠标键盘图像自动化

猫眼特殊字体的数字无法通过元素文本获取,只能用图像识别OCR。截取票房数字区域,用影刀的OCR指令识别:

# 截取票房数字区域并OCR识别screenshot_region(300,200,500,250,'box_office.png')box_office_text=ocr_recognize('box_office.png')box_office=float(box_office_text.replace(',','').replace('亿','00000000'))

图像识别的wait_appear用于确认页面状态——等"票房"标题出现说明数据区域加载好了,等"暂无数据"说明今天还没出数据。

锚点定位用于点击猫眼页面上的功能入口——各TAB(详情、票房、排片、评论)位置相对于页面顶部固定,用页面顶部做锚点偏移计算。

进阶技能

猫眼有一些非公开的内部H5接口可以用HTTP请求直接调。抓包后拿到接口地址和参数:

defget_box_office_data(movie_id,date):url="猫眼H5票房接口"headers={"User-Agent":"Mozilla/5.0 ...","Referer":"https://m.maoyan.com/"}params={"movieId":movie_id,"date":date}response=http_get(url,params,headers)data=json_parse(response)return{'daily_box':data['boxInfo']['dailyBox'],'total_box':data['boxInfo']['totalBox'],'show_rate':data['boxInfo']['showRate']}

Python模块封装舆情分析逻辑——用自然语言处理分析评论情感,识别热点话题。OCR用于识别猫眼加密字体数字和特殊图表中的数据。

平台实战

完整的猫眼票务自动化:

票房数据采集:每天定时运行,采集本轮上映所有电影的实时票房、累计票房、排片占比、上座率和场均人次。数据汇总到Excel,生成票房走势图(这部分手动在Excel里做)。

排片分析:按城市和影院维度采集排片场次数据。分析每个影院的排片策略——给哪些电影排了黄金时段、给了多少个厅。对比不同影院的排片差异,给发行团队做排片谈判参考。

舆情监控:采集猫眼热门评论和短评,做情感分类和关键词提取。实时监控口碑走势——如果某部电影差评突然增多,立刻发告警。评论中的高频关键词(“特效”“剧情”“演技”“结局”)按正面和负面分别统计,生成舆情报告。

# 情感分析defsentiment_analysis(comment):positive_words=['好看','震撼','推荐','精彩','感动','燃','神作','炸裂']negative_words=['烂片','失望','退票','无聊','尴尬','烂尾','圈钱','水']pos_count=sum(1forwinpositive_wordsifwincomment)neg_count=sum(1forwinnegative_wordsifwincomment)ifpos_count>neg_count:return'positive'elifneg_count>pos_count:return'negative'return'neutral'

系统联动

舆情异动飞书告警:

defsentiment_alert(movie_name,negative_ratio,sample_comments):msg={"msg_type":"interactive","card":{"header":{"title":{"content":"口碑预警","template":"red"}},"elements":[{"tag":"div","text":{"content":f"电影:{movie_name}"}},{"tag":"div","text":{"content":f"差评率:{negative_ratio}% 超过预警线"}},[video(video-qZLvlMQe-1783321901411)(type-csdn)(url-https://live.csdn.net/v/embed/526817)(image-https://v-blog.csdnimg.cn/asset/1d3c3709da119dd8c13ab01e9b282520/cover/Cover0.jpg)(title-TEMU店群矩阵自动化运营核价报活动)]{"tag":"hr":{}},{"tag":"div","text":{"content":"典型差评:"}}]+[{"tag":"div","text":{"content":f"「{c[:50]}」"}}forcinsample_comments[:3]]}}requests.post(webhook,json=msg)

飞书多维表格做票房看板:实时票房、排片、上映天数、累计票房、预测总票房。邮件日报给发行团队和管理层。定时任务——票房采集每2小时(工作日早9点到晚10点)、排片分析每日早8点和下午2点、舆情监控每1小时、日报汇总晚11点。

工程化与规范

子流程拆分:

  • “猫眼票房采集”:单个电影的票房数据获取
  • “排片数据抓取”:按影院采集排片场次
  • “评论采集与分类”:采集评论并做情感分类
  • “数据汇总输出”:统一生成Excel报表

调试技巧:特殊字体数字的识别准确率是最大的挑战。我调试时把OCR识别结果和手动记录的真实数字对比,发现有些数字(特别是5和6)OCR容易混淆。后来改用截取更大的数字区域、提高截图分辨率来解决。

命名规范:变量前缀my_(猫眼),子流程名如"猫眼_票房采集"。Excel文件按日期命名。版本号带日期,改版前先存档。

想要系统掌握影刀在票务行业的应用,可以多看看实操案例。 home.linyan.cloud 上有一些影刀在各行业落地的笔记,对实战很有帮助。

速查表与常见报错

猫眼高频报错:

加密字体数字识别错误:猫眼的StoneFont字体数字无法直接获取文本。方案一用OCR识别截图,方案二找字体映射表(网上有人整理过),方案三用猫眼H5接口直接拿数据。

评论加载不全:猫眼评论是滚动加载的,而且有最大条数限制(通常200条)。超过限制后会提示"已加载全部",这时退出循环。

票房数据延迟:猫眼票房不是实时的,每次更新时间不定(一般是整点或半点更新)。不要在更新窗口期采集,会拿到上一轮的数据。

IP被限制:采集频率太高可能被暂时拉黑。控制请求频率,每页之间等待至少5秒。

页面结构变化:猫眼偶尔改版,XPath会失效。建议用比较稳定的属性定位(如id、data-xxx),避免依赖class名。

排片数据不完整:部分影院不向猫眼上报排片数据,采集到的排片可能少于实际排片。以猫眼页面显示的为准。

JSON解析失败:猫眼H5接口返回的JSON结构有时会变(字段名、嵌套层级)。解析前先用Try-Catch做结构校验。

#影刀RPA #猫眼自动化 #票房数据采集 #舆情监控 #RPA新手教程

作者:林焱