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

如何用Python读取HTML页面的SWFObject并自动提取文件夹名?

自动化提取SWF所在文件夹名称方案

我来帮你搞定这个自动化提取文件夹名称的需求!下面是具体的实现思路和代码示例:

核心思路

我们需要完成三个关键步骤:

  • 抓取目标页面的HTML源码
  • 从源码中定位到SWFObject初始化时传入的SWF文件路径
  • 从SWF路径中解析出对应的文件夹名称

具体实现(Node.js版本)

我用Node.js来写示例,因为你的原页面用了JavaScript,这样技术栈更统一:

首先需要安装依赖:

npm install axios cheerio

然后是核心代码:

const axios = require('axios');
const cheerio = require('cheerio');

async function getSWFFolderFromPage(pageUrl) {
  try {
    // 第一步:获取页面HTML内容
    const { data: html } = await axios.get(pageUrl);
    
    // 第二步:解析HTML,提取SWF文件路径
    const $ = cheerio.load(html);
    let swfFilePath = '';

    // 遍历所有script标签,找到包含SWFObject的代码块
    $('script').each((_, scriptElem) => {
      const scriptContent = $(scriptElem).html();
      if (scriptContent?.includes('SWFObject')) {
        // 用正则匹配SWF路径(支持双引号或单引号包裹的路径)
        const pathMatch = scriptContent.match(/new SWFObject\(['"]([^'"]+)['"]/);
        if (pathMatch && pathMatch[1]) {
          swfFilePath = pathMatch[1];
          return false; // 找到目标后终止遍历
        }
      }
    });

    if (!swfFilePath) {
      throw new Error('页面中未找到SWFObject初始化代码或SWF路径');
    }

    // 第三步:从路径中提取文件夹名称
    const pathSegments = swfFilePath.split('/');
    // 如果SWF直接在根目录(比如"x.swf"),返回当前目录标识
    if (pathSegments.length === 1) {
      return './';
    }
    // 移除最后一段(文件名),拼接成文件夹路径
    const folderPath = pathSegments.slice(0, -1).join('/');
    return folderPath;

  } catch (err) {
    console.error('提取失败:', err.message);
    return null;
  }
}

// 调用示例
getSWFFolderFromPage('https://your-target-page-url.com')
  .then(folder => {
    if (folder) {
      console.log('提取到的文件夹名称:', folder);
    }
  });

特殊情况处理

  • 如果你的页面是动态渲染的(比如SWF路径是通过JS动态生成后注入的),上面的静态抓取方式会失效,这时候需要改用puppeteer这类无头浏览器工具,等待页面JS执行完成后再提取内容。
  • 如果SWF路径的引号格式不固定,正则表达式已经兼容了单引号和双引号的情况,可直接使用。
  • 如果需要用Python实现,逻辑完全一致:用requests获取页面,BeautifulSoup解析HTML,正则匹配路径后处理字符串即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:41:34