You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript从Hulu的UUID格式URL中获取电影名称?

从Hulu UUID格式链接中获取电影名称的JavaScript方案

要从Hulu的UUID格式watch链接中获取电影名称,核心问题是Hulu页面是客户端渲染的——静态HTML、响应头里都不会包含内容标题,必须等前端JS加载完成后,从页面的运行时数据或渲染后的DOM中提取。

场景1:浏览器环境(油猴脚本/页面控制台)

如果是在Hulu页面内部执行代码(比如油猴脚本、浏览器开发者工具控制台),可以直接读取页面的全局状态数据:

// 查找包含内容标题的全局状态对象(Hulu的状态存储可能会更新,需根据实际情况调整)
function getTitle() {
  // 尝试从全局的内容元数据中提取
  for (const key in window) {
    if (typeof window[key] === 'object' && window[key]?.contentMetadata?.title) {
      return window[key].contentMetadata.title;
    }
    // 备选:从Redux状态中提取(如果页面用Redux管理状态)
    if (window[key]?.entities?.content) {
      const uuid = window.location.pathname.split('/')[2];
      return window[key].entities.content[uuid]?.title;
    }
  }
  // 最后尝试抓取DOM中的标题元素
  const titleEl = document.querySelector('h1[data-qa="title"]');
  return titleEl ? titleEl.textContent.trim() : null;
}

// 调用示例
console.log(getTitle()); // 输出 "My Favorite Girlfriend"

场景2:Node.js爬虫环境

如果是在自己的后端服务中获取,需要用无头浏览器(比如Puppeteer)加载页面并等待JS执行完成,再提取数据:

首先安装依赖:

npm install puppeteer

然后编写代码:

const puppeteer = require('puppeteer');

async function fetchHuluTitle(uuid) {
  const browser = await puppeteer.launch({ headless: 'new' });
  const page = await browser.newPage();
  
  // 加载页面,等待网络空闲确保JS执行完成
  await page.goto(`https://www.hulu.com/watch/${uuid}`, { waitUntil: 'networkidle2' });
  
  const title = await page.evaluate(() => {
    // 同浏览器环境的逻辑,提取标题
    for (const key in window) {
      if (window[key]?.contentMetadata?.title) {
        return window[key].contentMetadata.title;
      }
      if (window[key]?.entities?.content) {
        const currentUuid = window.location.pathname.split('/')[2];
        return window[key].entities.content[currentUuid]?.title;
      }
    }
    const titleEl = document.querySelector('h1[data-qa="title"]');
    return titleEl ? titleEl.textContent.trim() : null;
  });

  await browser.close();
  return title;
}

// 使用示例
fetchHuluTitle('78974b54-1feb-43ce-9a99-1c1e9e5fce3f')
  .then(title => console.log('电影名称:', title))
  .catch(err => console.error('获取失败:', err));

注意事项

  • Hulu的页面结构和全局状态存储方式可能会随版本更新变化,上述代码中的选择器或全局对象路径需要定期验证调整。
  • 直接调用Hulu的官方API需要身份认证,普通开发者无法获取合法权限,因此无头浏览器是最可行的方案。
  • 浏览器环境下,第三方网站受同源策略限制,无法直接跨域请求Hulu页面数据,只能在Hulu页面内部执行代码。

内容的提问来源于stack exchange,提问作者yigal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 06:35:22