plugin/feikuai/html结构分析.md
feikuai.tvhttps://feikuai.tv/vodsearch/-------------.html?wd={关键词}https://feikuai.tv/voddetail/{ID}.html搜索结果页面的主要内容位于 .module-items.module-card-items 元素内,每个搜索结果项包含在 .module-card-item.module-item 元素中。
<div class="module-main module-page" id="ajaxRoot">
<div class="module-items module-card-items" id="resultList">
<div class="module-card-item module-item">
<!-- 单个搜索结果 -->
</div>
</div>
</div>
每个搜索结果包含以下主要元素:
<div class="module-card-item-class">剧集</div>
<a href="/voddetail/157546.html" class="module-card-item-poster">
<div class="module-item-cover">
<div class="module-item-note">30集完结</div>
<div class="module-item-douban">豆瓣:9.3分</div>
<div class="module-item-pic">
</div>
</div>
</a>
<a> 标签的 href 属性提取157546).module-item-note 包含集数信息.module-item-douban 包含评分(可选)img 标签的 data-original 属性<div class="module-card-item-info">
<div class="module-card-item-title">
<a href="/voddetail/157546.html"><strong>凡人修仙传</strong></a>
</div>
<div class="module-info-item">
<div class="module-info-item-content">2025 <span class="slash">/</span>中国大陆 <span class="slash">/</span> 奇幻,古装</div>
</div>
<div class="module-info-item">
<div class="module-info-item-content">杨洋,金晨,汪铎,赵小棠,...</div>
</div>
</div>
.module-card-item-title strong 的文本内容.module-info-item-content 包含,用 / 分隔.module-info-item-content 包含演员列表<div class="module-card-item-footer">
<a href="/vodplay/157546-1-1.html" class="play-btn icon-btn">
<i class="icon-play"></i><span>播放</span>
</a>
<a href="/voddetail/157546.html" class="play-btn-o"><span>详情</span></a>
</div>
<div class="module-heading-search-result">
搜索 "<strong>凡人修仙传</strong>",
找到 <strong class="mac_total">26</strong> <span class="mac_suffix">部影片</span>
</div>
.module-heading-search-result strong (第一个).mac_total 的文本内容<div id="resultPaging">
<div id="page">
<a href="/vodsearch/%E5%87%A1%E4%BA%BA%E4%BF%AE%E4%BB%99%E4%BC%A0----------1---.html" class="page-link page-previous">首页</a>
<span class="page-link page-number page-current display">1</span>
<a href="/vodsearch/%E5%87%A1%E4%BA%BA%E4%BF%AE%E4%BB%99%E4%BC%A0----------2---.html" class="page-link page-number display">2</a>
<a href="/vodsearch/%E5%87%A1%E4%BA%BA%E4%BF%AE%E4%BB%99%E4%BC%A0----------2---.html" class="page-link page-next">下一页</a>
</div>
</div>
<div class="module module-info">
<div class="module-main">
<div class="module-info-poster">
<div class="module-item-cover">
<div class="module-item-pic">
</div>
</div>
</div>
<div class="module-info-main">
<div class="module-info-heading">
<h1>凡人修仙传</h1>
<div class="module-info-tag">
<div class="module-info-tag-link"><a title="2025" href="/vodshow/13-----------2025.html">2025</a></div>
<div class="module-info-tag-link"><a title="中国大陆" href="/vodshow/13-%E4%B8%AD%E5%9B%BD%E5%A4%A7%E9%99%86----------.html">中国大陆</a></div>
<div class="module-info-tag-link">
<a href="/vodshow/13---%E5%A5%87%E5%B9%BB--------.html">奇幻</a><span class="slash">/</span>
<a href="/vodshow/13---%E5%8F%A4%E8%A3%85--------.html">古装</a>
</div>
</div>
</div>
</div>
</div>
</div>
h1 标签的文本内容.module-info-tag-link a 的 title 属性.module-info-tag-link a 的 title 属性.module-info-tag-link 内的所有 a 标签文本<div class="module-info-content">
<div class="module-info-items">
<div class="module-info-item module-info-introduction">
<div class="module-info-introduction-content">
<p>该剧改编自忘语的同名小说...</p>
</div>
</div>
<div class="module-info-item">
<span class="module-info-item-title">导演:</span>
<div class="module-info-item-content">
<a href="/vodsearch/-----%E6%9D%A8%E9%98%B3--------.html" target="_blank">杨阳</a><span class="slash">/</span>
</div>
</div>
<div class="module-info-item">
<span class="module-info-item-title">主演:</span>
<div class="module-info-item-content">
<a href="/vodsearch/-%E6%9D%A8%E6%B4%8B------------.html" target="_blank">杨洋</a><span class="slash">/</span>
<a href="/vodsearch/-%E9%87%91%E6%99%A8------------.html" target="_blank">金晨</a><span class="slash">/</span>
...
</div>
</div>
</div>
</div>
.module-info-introduction-content p 的文本内容.module-info-item-title,然后提取 .module-info-item-content 中的演员链接.module-info-item-title,然后提取 .module-info-item-content 中的演员链接<div class="module" id="download-list" name="download-list">
<div class="module-heading player-heading">
<h2 class="module-title">影片下载</h2>
<div class="module-tab">
<div class="module-tab-items">
<div class="module-tab-items-box hisSwiper" id="y-downList">
<div class="module-tab-item tab-item selected active"
data-index="3"
data-dropdown-value="百度网盘">
<span>百度网盘</span>
<small>1</small>
</div>
<div class="module-tab-item tab-item"
data-index="2"
data-dropdown-value="夸克网盘">
<span>夸克网盘</span>
<small>1</small>
</div>
<!-- 更多网盘类型... -->
</div>
</div>
</div>
</div>
</div>
.module-tab-item span 的文本内容.module-tab-item small 的文本内容data-dropdown-value 属性或 span 文本支持的网盘/链接类型:
baidu)quark)xunlei)aliyun)tianyi)uc)115)123)mobile)magnet)<div class="module-list module-player-list sort-list module-downlist">
<div class="tab-content selected" id="tab-content-3">
<div class="module-row-info">
<a class="module-row-text copy"
href="https://pan.baidu.com/s/1u9aaXsTkL1GdOMIH9qnPCA?pwd=B5B3"
target="_blank"
title="下载《凡人修仙传》">
<i class="icon-video-file"></i>
<div class="module-row-title-dlist">
<h4>凡人修仙传(2025)4K 高码率 更至EP169@一键搜片-2025-11-16 18:55:25</h4>
<p>https://pan.baidu.com/s/1u9aaXsTkL1GdOMIH9qnPCA?pwd=B5B3</p>
</div>
</a>
</div>
</div>
<div class="tab-content" id="tab-content-2">
<div class="module-row-info">
<a class="module-row-text copy"
href="https://pan.quark.cn/s/063ce74fbf41"
target="_blank"
title="下载《凡人修仙传》">
<i class="icon-video-file"></i>
<div class="module-row-title-dlist">
<h4>凡人修仙传:外海风云篇 4K [更新至169集]@一键搜片-2025-11-16 18:55:25</h4>
<p>https://pan.quark.cn/s/063ce74fbf41</p>
</div>
</a>
</div>
</div>
<div class="tab-content" id="tab-content-6">
<div class="module-row-info">
<a class="module-row-text copy"
href="magnet:?xt=urn:btih:C3A3A53C2408396D64450046361F00650CB9E53E&dn=Strange.Tales.of.Tang.Dynasty.S03E07.2025.2160p.IQ.WEB-DL.H265.DDP5.1-BlackTV.mkv&xl=2458041664"
target="_blank"
title="下载《唐朝诡事录之长安》">
<i class="icon-video-file"></i>
<div class="module-row-title-dlist">
<h4>Strange.Tales.of.Tang.Dynasty.S03E07.2025.2160p.IQ.WEB-DL.H265.DDP5.1-BlackTV.mkv · 2.29GB@一键搜片-2025-11-18 17:09:52</h4>
<p>magnet:?xt=urn:btih:C3A3A53C2408396D64450046361F00650CB9E53E&dn=Strange.Tales.of.Tang.Dynasty.S03E07.2025.2160p.IQ.WEB-DL.H265.DDP5.1-BlackTV.mkv&xl=2458041664</p>
</div>
</a>
</div>
</div>
</div>
下载链接URL: .module-row-text 的 href 属性 或 .module-row-title-dlist p 的文本内容
网盘/链接类型: 根据链接URL自动识别
baidu, quark, aliyun, xunlei, tianyi, uc, 115, 123, mobilemagnet:?xt=urn:btih: 开头识别为 magnet独立标题 (⭐ 重要 - 对应API的 work_title 字段):
.module-row-title-dlist h4 提取文本内容@来源-日期 时间).mkv, .mp4 等)· 2.29GB){详情页主标题}-{独立标题}凡人修仙传(2025)4K 高码率 更至EP169@一键搜片-2025-11-16 18:55:25
→ 清洗后:凡人修仙传(2025)4K 高码率 更至EP169
→ 包含关键词"凡人修仙传",无需拼接Strange.Tales.of.Tang.Dynasty.S03E07.2025.2160p.IQ.WEB-DL.H265.DDP5.1-BlackTV.mkv · 2.29GB@一键搜片-2025-11-18 17:09:52
→ 详情页标题:唐朝诡事录之长安
→ 清洗后:Strange.Tales.of.Tang.Dynasty.S03E07.2025.2160p.IQ.WEB-DL.H265.DDP5.1-BlackTV
→ 不包含关键词,需要拼接
→ 最终:唐朝诡事录之长安-Strange.Tales.of.Tang.Dynasty.S03E07.2025.2160p.IQ.WEB-DL.H265.DDP5.1-BlackTV日期提取 (对应API的 datetime 字段):
@来源-YYYY-MM-DD HH:mm:ss@[^-]+-(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})@一键搜片-2025-11-16 18:55:25 提取 2025-11-16 18:55:25.module-card-item.module-item 元素.module-card-item-poster 的 href 属性提取详情页链接157546).module-card-item-title strong 提取标题.module-card-item-class 提取分类.module-item-note 提取更新状态.module-item-douban 提取豆瓣评分(可选).module-info-item-content 提取年份/地区/类型.module-info-item-content 提取演员列表img 的 data-original 属性提取封面图片URL获取资源基本信息:
h1 的文本内容.module-info-tag-link a[title] 的 title 属性.module-info-tag-link a[title] 的 title 属性.module-info-tag-link 内的所有 a 标签文本.module-info-poster img 的 data-original 属性提取详细信息:
.module-info-introduction-content p 的文本内容.module-info-item,提取其中的 a 标签文本.module-info-item,提取其中的 a 标签文本提取下载链接(⭐ 核心):
.module-tab-item,获取网盘类型和数量.tab-content,提取其中的 .module-row-info.module-row-info:
.module-row-text 的 href 属性或 .module-row-title-dlist p 提取magnet).module-row-title-dlist h4 提取完整文本work_title):
{详情页主标题}-{清洗后标题}datetime): 从原始标题中提取日期,使用正则 @[^-]+-(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})?pwd=xxx 或 ?password=xxx,仅适用于部分网盘)| 类型 | URL特征 | 密码格式 |
|---|---|---|
| 百度网盘 | pan.baidu.com | ?pwd= 参数 |
| 夸克网盘 | pan.quark.cn | 无密码或单独提供 |
| 阿里云盘 | alipan.com 或 aliyundrive.com | 无密码 |
| 迅雷网盘 | pan.xunlei.com | ?pwd= 参数 |
| 天翼云盘 | cloud.189.cn | 无密码 |
| UC网盘 | drive.uc.cn | 无密码 |
| 115网盘 | 115cdn.com | ?password= 参数 |
| 123网盘 | 123684.com, 123685.com, 123912.com | 无密码 |
| 移动云盘 | caiyun.139.com | 无密码 |
| 磁力链接 | magnet:?xt=urn:btih: | 无密码 |
根据README的API文档,Link对象字段映射关系:
| API字段 | HTML提取位置 | 提取方法 | 示例 |
|---|---|---|---|
type | 链接URL | 自动识别URL特征 | baidu, quark, tianyi, magnet 等 |
url | .module-row-title-dlist p 或 href | 文本内容或属性值 | https://pan.baidu.com/s/xxx 或 magnet:?xt=... |
password | 链接URL参数 | 提取 ?pwd= 或 ?password= | B5B3, yyds (仅部分网盘) |
datetime | .module-row-title-dlist h4 | 正则提取日期时间 | 2025-11-16 18:55:25 |
work_title | .module-row-title-dlist h4 + 详情页主标题 | 清洗+关键词检查+拼接 | 见下方详细说明 |
work_title 字段详细处理流程:
提取原始标题: 从 .module-row-title-dlist h4 获取完整文本
凡人修仙传(2025)4K 高码率 更至EP169@一键搜片-2025-11-16 18:55:25Strange.Tales.of.Tang.Dynasty.S03E07.2025.2160p.IQ.WEB-DL.H265.DDP5.1-BlackTV.mkv · 2.29GB@一键搜片-2025-11-18 17:09:52清洗标题:
@来源-日期 时间 格式的后缀.mkv, .mp4, .avi 等· 2.29GB 等文件大小信息凡人修仙传(2025)4K 高码率 更至EP169Strange.Tales.of.Tang.Dynasty.S03E07.2025.2160p.IQ.WEB-DL.H265.DDP5.1-BlackTV关键词检查与拼接:
唐朝诡事录之长安)凡人修仙传(2025)4K 高码率 更至EP169 (包含"凡人修仙传"){详情页主标题}-{清洗后标题}
唐朝诡事录之长安-Strange.Tales.of.Tang.Dynasty.S03E07.2025.2160p.IQ.WEB-DL.H265.DDP5.1-BlackTV其他字段说明:
datetime: 从原始 h4 标题中提取的时间戳,格式为 YYYY-MM-DD HH:mm:sspassword: 部分网盘(百度、迅雷、115)的密码在URL参数中,需要单独提取;磁力链接无密码图片延迟加载: 封面图片使用了 lazy lazyload 类,实际图片URL在 data-original 属性中
资源ID提取: 从URL中提取ID的正则表达式:/voddetail/(\d+)\.html
链接类型识别:
pan.baidu.com, pan.quark.cn 等)magnet:?xt=urn:btih: 前缀识别网盘链接密码: 某些网盘的密码包含在URL参数中(如 ?pwd=B5B3),需要分离链接和密码;磁力链接无密码
独立标题处理 (⭐ 核心重点):
h4 标题,必须单独提取{详情页主标题}-{清洗后标题}日期时间提取 (重要):
h4 标题末尾提取日期时间@来源-YYYY-MM-DD HH:mm:ss@[^-]+-(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})多链接支持: 一个资源可能有多个网盘和磁力链接,每个链接都有独立的标题、时间和密码
分页处理: 搜索结果有分页,URL格式为 /vodsearch/{关键词}----------{页码}---.html
AJAX加载: 网站使用AJAX动态加载搜索结果,需要注意异步请求处理
反爬虫: 图片设置了 referrerpolicy="no-referrer",需要在请求头中处理