影刀RPA新手教程猫眼票务自动化完全指南——票房数据采集、影院排片分析与舆情监控我在某电影发行公司做数据分析时每天都在猫眼上查票房、截图排片、整理舆情对着几十部电影的页面来回切。后来学了影刀RPA一套流程就能把猫眼上的票房数据、影院排片、观众评价全部自动采集下来汇总成Excel报表老板直夸效率高。认识影刀与安装影刀社区版免费下载安装过程标准三连下载安装包→双击安装→按提示完成。安装后先做两件事一是去浏览器插件里装上Chrome插件操作网页自动化必需二是熟悉编辑器界面。编辑器左侧是指令面板你可以搜等待“点击”获取文本等关键词快速找到需要的指令拖到画布上连上线就能运行。不用写代码也能做出完整的自动化流程。元素定位四合一XPath CSS 正则猫眼的页面结构比较清晰元素定位难度适中//div[classmovie-name]/span/text() 电影名称 //span[classstonefont score]/text() 评分 //div[classbox-office]/span[classnum] 票房数字 //ul[classsession-list]/li//span[classtime] 排片时间 //div[classcomment-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条 ├─ 情感分析评论正面/负面比例 └─ 写入ExcelIf条件判断用于自动预警——评分跌破阈值、排片率大幅下降、差评比例升高时自动提醒。Try-Catch包在每个电影的采集外面某个电影页面加载失败不影响其他电影。网页自动化猫眼的反爬措施一般但数据加载是异步的。等待策略用等待元素出现等票房数字显示——这些数字是Ajax异步加载的页面加载完不等于数据加载完。我一般等.box-office .num这个元素出现最长等15秒等到了说明数据已经渲染好。弹窗不多主要是下载App和登录引导弹窗。下载App弹窗点关闭按钮就能关登录弹窗按Esc。如果弹窗挡住了数据采集先处理弹窗再继续。翻页在评论采集时会用到。猫眼的评论列表是滚动加载的翻到下面自动加载更多不是传统翻页。处理方式是用懒加载方案——持续向下滚动用评论ID去重直到没有新评论出现。collected_comments[]last_count0whileTrue:scroll_to_bottom()wait(2)commentsget_similar_elements(评论项)current_countlen(comments)ifcurrent_countlast_count:break# 没有新评论加载forcommentincomments[last_count:]:textcomment.find_element(.comment-content).text comment_idcomment.get_attribute(data-id)ifcomment_idnotincollected_comments:collected_comments.append(comment_id)process_comment(text)last_countcurrent_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_textocr_recognize(box_office.png)box_officefloat(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}responsehttp_get(url,params,headers)datajson_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_countsum(1forwinpositive_wordsifwincomment)neg_countsum(1forwinnegative_wordsifwincomment)ifpos_countneg_count:returnpositiveelifneg_countpos_count:returnnegativereturnneutral系统联动舆情异动飞书告警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,jsonmsg)飞书多维表格做票房看板实时票房、排片、上映天数、累计票房、预测总票房。邮件日报给发行团队和管理层。定时任务——票房采集每2小时工作日早9点到晚10点、排片分析每日早8点和下午2点、舆情监控每1小时、日报汇总晚11点。工程化与规范子流程拆分“猫眼票房采集”单个电影的票房数据获取“排片数据抓取”按影院采集排片场次“评论采集与分类”采集评论并做情感分类“数据汇总输出”统一生成Excel报表调试技巧特殊字体数字的识别准确率是最大的挑战。我调试时把OCR识别结果和手动记录的真实数字对比发现有些数字特别是5和6OCR容易混淆。后来改用截取更大的数字区域、提高截图分辨率来解决。命名规范变量前缀my_猫眼子流程名如猫眼_票房采集。Excel文件按日期命名。版本号带日期改版前先存档。想要系统掌握影刀在票务行业的应用可以多看看实操案例。 home.linyan.cloud 上有一些影刀在各行业落地的笔记对实战很有帮助。速查表与常见报错猫眼高频报错加密字体数字识别错误猫眼的StoneFont字体数字无法直接获取文本。方案一用OCR识别截图方案二找字体映射表网上有人整理过方案三用猫眼H5接口直接拿数据。评论加载不全猫眼评论是滚动加载的而且有最大条数限制通常200条。超过限制后会提示已加载全部这时退出循环。票房数据延迟猫眼票房不是实时的每次更新时间不定一般是整点或半点更新。不要在更新窗口期采集会拿到上一轮的数据。IP被限制采集频率太高可能被暂时拉黑。控制请求频率每页之间等待至少5秒。页面结构变化猫眼偶尔改版XPath会失效。建议用比较稳定的属性定位如id、data-xxx避免依赖class名。排片数据不完整部分影院不向猫眼上报排片数据采集到的排片可能少于实际排片。以猫眼页面显示的为准。JSON解析失败猫眼H5接口返回的JSON结构有时会变字段名、嵌套层级。解析前先用Try-Catch做结构校验。#影刀RPA #猫眼自动化 #票房数据采集 #舆情监控 #RPA新手教程作者林焱