如何用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
相关产品推荐
相关产品推荐

