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

如何使用原生JavaScript(Vanilla JS)获取外部网站特定文本数据?

用原生JavaScript获取在线电台当前播放内容并更新页面

1. 先解决跨域限制问题

直接在前端请求https://www.radionova.bg/schedule/index会触发浏览器的**跨域资源共享(CORS)**限制——因为你的项目域名和电台网站域名不一致。常用解决方式有两种:

  • 后端代理:在自己的服务器上写一个接口,由后端请求电台页面并返回内容,前端再请求自己的后端接口(生产环境推荐)。
  • 测试用CORS代理:仅用于本地测试,在请求URL前添加公开代理前缀(不建议生产环境使用)。

另外,你可以先打开电台网站的开发者工具(F12 → Network面板),看看是否有官方API直接返回播放信息,这种方式比解析HTML更可靠。

2. 原生JS实现步骤

步骤1:发起请求获取页面HTML

使用fetch API获取电台页面的HTML内容:

async function getRadioPageHTML() {
  try {
    // 这里替换为实际可请求的URL(比如带代理前缀或自己的后端接口)
    const response = await fetch('https://www.radionova.bg/schedule/index');
    if (!response.ok) throw new Error(`请求失败:${response.status}`);
    return await response.text();
  } catch (err) {
    console.error('获取页面出错:', err);
    return null;
  }
}

步骤2:解析HTML提取播放信息

用DOMParser把HTML转换成DOM对象,再通过元素选择器定位当前播放内容(必须先在电台页面用开发者工具确认实际选择器,以下为示例):

async function getCurrentTrack() {
  const html = await getRadioPageHTML();
  if (!html) return null;

  const parser = new DOMParser();
  const doc = parser.parseFromString(html, 'text/html');
  
  // 替换为你在电台页面找到的真实选择器,比如当前播放歌曲的元素class/id
  const trackElement = doc.querySelector('.current-play .track-title');
  if (!trackElement) {
    console.error('未找到当前播放内容的元素');
    return null;
  }
  
  return trackElement.textContent.trim();
}

步骤3:更新项目页面元素

拿到播放内容后,修改目标元素的innerHTML:

async function updateTrackDisplay() {
  const currentTrack = await getCurrentTrack();
  if (!currentTrack) return;
  
  // 替换为你项目中要更新的元素选择器
  const displayElement = document.getElementById('radio-current-content');
  if (displayElement) {
    displayElement.innerHTML = `<span>当前播放:</span><strong>${currentTrack}</strong>`;
  }
}

// 首次执行更新
updateTrackDisplay();

// 定时刷新(比如每30秒更新一次)
setInterval(updateTrackDisplay, 30000);

3. 关键注意事项

  • 选择器要准确:必须自己在电台页面的开发者工具中定位到当前播放内容的元素,示例中的选择器仅作参考。
  • 生产环境用后端代理:公开CORS代理存在安全和稳定性问题,正式项目一定要通过自己的后端转发请求。
  • 错误处理不能少:代码中加入了异常捕获,避免请求失败导致页面功能异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:22:27