稀土掘金技术社区 03月02日
我用deepseek预测了《哪吒2》最终票房
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何利用AI预测电影票房,以《哪吒2》为例,通过Playwright抓取豆瓣、淘票票、猫眼、微博、抖音等平台的数据,然后使用Deepseek进行智能分析,预测电影的最终票房。文章详细展示了如何使用Playwright抓取各平台数据的代码,包括豆瓣评分、评价人数,淘票票评分、想看人数,猫眼评分、想看人数,以及微博和抖音的热度指数。最后,通过Deepseek结合多平台数据和市场因素,给出了《哪吒2》的票房预测结果。

🤖️ **数据抓取与整合**: 使用Playwright从豆瓣、淘票票、猫眼、微博、抖音等平台抓取关键数据,包括评分、评价人数、想看人数以及热度指数,为票房预测提供数据基础。

📈 **票房预测模型**: 通过Deepseek构建票房预测模型,综合考虑电影本身的热度、节假日效应、市场竞争、社交媒体传播等多种因素,进行更科学合理的预测。

💰 **《哪吒2》票房预测**: 基于抓取到的数据和Deepseek的分析,预测《哪吒2》的最终票房为165亿元,展示了AI在票房预测方面的应用潜力。

原创 前端安迪 2025-03-01 09:02 重庆

点击关注公众号,“技术干货” 及时达!

你有没有想过,如何用AI来预测一部电影的票房?比如最近火爆的《哪吒2》,大家都在猜它会赚多少钱,但我决定不靠猜测,直接让 「deepseek」 来帮我做预测!

没错,这次我准备把大数据和AI相结合,用 「Playwright」 抓取豆瓣、淘票票、猫眼等多个平台的数据,再通过 「deepseek」 进行智能分析,来预测出《哪吒2》最终票房的预测。

等等,这是什么操作?!

先别急,听我慢慢给你讲。首先,我用 「Playwright」(对,就是那个能让你自动化浏览器操作的神器)从豆瓣、淘票票、猫眼、微博、抖音等平台上抓取实时数据,这些平台的数据对票房有着超强的预测能力。比如豆瓣的评分和评价人数,能看出观众的口碑;淘票票的想看人数,可以透露出多少人已经按捺不住想要去电影院;抖音、微博这些社交平台的热度,直接能反映出电影的火爆程度。

怎么抓取数据?

不废话了,直接上代码,告诉大家怎么抓取数据:

我们先来看下怎么在豆瓣上抓取数据:

抓取豆瓣数据

   async function scrapeDouban() {      const browser = await chromium.launch({ headless: true });      const page = await browser.newPage();      try {        await page.goto('https://movie.douban.com/subject/34780991/');                // 豆瓣评分        const ratingLocator = page.locator('.rating_num');        // 评价人数        const votesLocator = page.locator('span[property="v:votes"]');                const rating = await ratingLocator.innerText();        const votes = await votesLocator.innerText();                console.log(`豆瓣数据 - 评分: ${rating}, 投票人数: ${votes}`);        return { rating, votes };      } catch (error) {        console.error('抓取豆瓣数据时出错:', error);        return null;      } finally {        await browser.close();      }    }

在这段代码中,我们使用「Playwright」模拟打开了一个Chrome浏览器,然后导航到了豆瓣中《哪吒2》的页面,接下来,我们抓取了该页面上的两个数据:豆瓣评分和评价人数

同样的道理,我们可以继续抓取其他几个平台的数据:

抓取淘票票数据

 async function scrapeTaopiaopiao() {      const browser = await chromium.launch({ headless: true });      const page = await browser.newPage();      try {        await page.goto('https://m.taopiaopiao.com/movies/detail.html?__webview_options__=transparentTitle%3Dauto%26showProgress%3DNO%26titlePenetrate%3DNO%26so%3DNO&from=def&showid=1429839&sqm=dianying.h5.unknown.value&spm=a1z2r.7661912.nowshowing.dbuybtn_0');
// 评分 const scoreNumLocator = page.locator('.has-score-num'); // 参与评分人数 const scoreTextLocator = page.locator('.has-score-text'); // 想看人数 const wantSeeNumberLocator = page.locator('.reputation-bottom-box>span:first-child'); // 看过人数 const viewsLocator = page.locator('.reputation-bottom-box-span');
const scoreNum = await scoreNumLocator.innerText(); const scoreText = await scoreTextLocator.innerText(); const wantSeeNumber = await wantSeeNumberLocator.innerText(); const views = await viewsLocator.innerText();
console.log(`淘票票数据 - 评分: ${scoreNum}, 参与评分人数: ${scoreText}, 想看人数: ${wantSeeNumber}, 看过人数: ${views}`); return { scoreNum, scoreText, wantSeeNumber, views }; } catch (error) { console.error('抓取淘票票数据时出错:', error); return null; } finally { await browser.close(); } }

抓取猫眼数据

  async function scrapeMaoyan() {      const browser = await chromium.launch({ headless: true });      const context = await browser.newContext({        ...devices['iPhone 13'], // 使用 iPhone 13 的配置        locale: 'zh-CN',        userAgent: 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'      });      const page = await context.newPage();      try {        await page.goto('https://i.maoyan.com/asgard/movie/1294273?channelId=4&cityId=1');        await page.waitForTimeout(3000)
// 评分 const scoreNumLocator = page.locator('.left-section .score'); // 参与评分人数 const scoreTextLocator = page.locator('.people-grade>span:first-child'); // 想看人数 const wantSeeNumberLocator = page.locator('.real-time-word-of-mouth .top .right .num').first().locator('span:first-child'); // 看过人数 const viewsLocator = page.locator('.real-time-word-of-mouth .top .right .watched>span').first();
const scoreNum = await scoreNumLocator.innerText(); const scoreText = await scoreTextLocator.innerText(); const wantSeeNumber = await wantSeeNumberLocator.innerText(); const views = await viewsLocator.innerText();
console.log(`猫眼数据 - 评分: ${scoreNum}, 参与评分人数: ${scoreText}, 想看人数: ${wantSeeNumber}, 看过人数: ${views}`); return { scoreNum, scoreText, wantSeeNumber, views }; } catch (error) { console.error('抓取猫眼数据时出错:', error); return null; } finally { await browser.close(); } }

抓取微博数据

  async function scrapeWeibo() {      const browser = await chromium.launch({ headless: true });      const page = await browser.newPage();      try {        // 此处使用微博搜索结果页作为数据来源,请替换为合适的 URL 和选择器        await page.goto('https://s.weibo.com/topic?q=%E5%93%AA%E5%90%92&pagetype=topic&topic=1&Refer=user_topic');        await page.waitForTimeout(3000)
// 热度指数 const scoreNumLocator = page.locator('.card-wrap .card').first().locator('.info p').last(); const scoreNum = await scoreNumLocator.innerText();
console.log(`微博数据 - 热度指数: ${scoreNum}`); return { scoreNum }; } catch (error) { console.error('抓取微博数据时出错:', error); return null; } finally { await browser.close(); } }

抓取抖音数据

  async function scrapeDouyin() {      const browser = await chromium.launch({ headless: false });      const page = await browser.newPage();      try {        await page.goto('https://www.douyin.com/discover/search/%E5%93%AA%E5%90%922%E9%AD%94%E7%AB%A5%E9%97%B9%E6%B5%B7?aid=036a7592-d05a-4995-a86f-655dd7f45a05&type=general');        await page.waitForTimeout(3000)
// 热度指数 const scoreNumLocator = page.locator('.IcWw97gF>span:first-child'); const scoreNum = await scoreNumLocator.innerText(); console.log(`抖音数据 - 热度指数: ${scoreNum}`); return { scoreNum }; } catch (error) { console.error('抓取抖音数据时出错:', error); return null; } finally { await browser.close(); } }

数据抓取不难,难的是分析!

数据抓完了,我们怎么分析呢?这时候,「deepseek」 就派上用场了!我把所有平台的数据输入给它,让 「deepseek」 按照电影票房的预测模型进行分析。它不仅仅考虑了电影本身的热度,还会综合考虑节假日效应、市场竞争、社交媒体的传播效应等多方面的因素。

我们继续写代码来实现,接下来我们使用Promise.all来获取所有数据,然后传递给predictBoxOffice函数:

 async function main() {      const [doubanData, taopiaopiaoData, maoyanData, weiboData, douyinData] = await Promise.all([        scrapeDouban(),        scrapeTaopiaopiao(),        scrapeMaoyan(),        scrapeWeibo(),        scrapeDouyin()      ]);
// 检查是否有数据抓取失败 if (!doubanData || !taopiaopiaoData || !maoyanData || !weiboData || !douyinData) { console.error('错误:部分数据抓取失败,无法进行预测。'); return; }
const combinedData = { douban: doubanData, taopiaopiao: taopiaopiaoData, maoyan: maoyanData, weibo: weiboData, douyin: douyinData, };
const predictedBoxOffice = await predictBoxOffice(combinedData); console.log(`预测的《哪吒2》最终票房金额为:\n${predictedBoxOffice}`); }
// 执行主函数 main();

predictBoxOffice 函数就是重中之重了,用来最终预测哪吒2的票房,废话不多说,我们继续上代码

import OpenAI from "openai";    const openai = new OpenAI({      baseURL: 'https://api.deepseek.com',      apiKey: '<DeepSeek API Key>'  });
async function predictBoxOffice(data) { // 整合各平台数据 const { douban, taopiaopiao, maoyan, weibo, douyin } = data;
const prompt = `你是一位资深的电影票房预测专家,同时精通数据分析和市场趋势研究。请基于最新实时票房数据(包括每日票房、观影人次、排片率等),结合以下多平台数据,对电影《哪吒2》的最终票房(单位:亿元)做出精准预测。【数据指标说明】:
1. 豆瓣数据: - 评分:${douban.rating} - 评价人数:${douban.votes} (高评分和大量投票通常预示着良好的口碑,但也需要关注口碑的分布情况)2. 淘票票数据: - 评分:${taopiaopiao.scoreNum} - 参与评分人数:${taopiaopiao.scoreText} - 想看人数:${taopiaopiao.wantSeeNumber} - 看过人数:${taopiaopiao.views} (预售票数反映了观众的购买意愿与市场信心)3. 猫眼数据: - 评分:${maoyan.scoreNum} - 参与评分人数:${maoyan.scoreText} - 想看人数:${maoyan.wantSeeNumber} - 看过人数:${maoyan.views} (“想看人数”可以衡量观众的期待值和区域市场热度)4. 微博数据: - 热度指数:${weibo.scoreNum} (社交平台讨论热度能够反映影片在年轻群体中的影响力)5. 抖音数据: - 热度指数:${douyin.scoreNum} (短视频平台的热度往往预示着影片的口碑传播和流行趋势)
【请重点分析以下因素】:1. 影片定档于春节档,请评估节假日效应对票房的推动作用;2. 请评估影片是否具备成为社会文化现象的潜力,并分析其对票房的额外拉动作用;3. 请详细分析社交媒体(微博、抖音、B站)的热度变化趋势,尤其是上映后的爆发式传播效应;4. 请参考中国电影市场的票房天花板(如《长津湖》57.75亿、《战狼2》56.94亿),评估《哪吒2》的票房潜力;5. 请分析同期上映的其他影片表现,评估市场竞争格局对《哪吒2》票房的潜在影响;6. 请基于多维度分析,给出票房预测区间(100亿元以上),并详细说明预测的不确定性因素。”
【请参考以下平台给出的最终票房预测】:1. 猫眼专业版:超160亿元 `;
try { const completion = await openai.chat.completions.create({ model: "deepseek-chat", messages: [ { role: 'system', content: prompt, }, { role: 'user', content: `请结合所有以上信息,给出电影《哪吒2魔童闹海》的最终票房预测,格式:最终预测票房:XX亿元`, }, ], temperature: 0.3, });
// 获取票房结果 const movieBoxOfficeData = completion.choices[0].message.content; return movieBoxOfficeData; } catch (error) { console.error('调用模型进行预测时出错:', error); return null; }}

然后呢?

然后就是最有趣的部分啦——根据这些数据,「deepseek」 给出了《哪吒2》的票房预测结果: 「165亿元。」

通过这种方式,我们就能比纯粹凭直觉猜测更加科学、合理地做出预测。而且,这个过程全程都是用代码自动化的,效率高到飞起!

不说了,我自己都觉得这个过程酷爆了,大家可以把代码复制到本地,运行起来试试看,看看你的预测结果把。

点击关注公众号,“技术干货” 及时达!

阅读原文

跳转微信打开

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

AI票房预测 Playwright Deepseek 数据抓取 《哪吒2》
相关文章