如何使用Flutter Dart通过HTTPS获取YouTube关键词
如何用Flutter Dart获取YouTube关键词(含HTTPS请求方式)
前置准备
首先在项目的pubspec.yaml中添加依赖:
dependencies: http: ^1.1.0 html: ^0.15.4
执行flutter pub get完成依赖安装。
完整实现代码
import 'package:http/http.dart' as http; import 'package:html/parser.dart' as parser; import 'package:html/dom.dart' as dom; Future<List<String>> getYouTubeKeywords(String videoUrl) async { try { // 解析HTTPS地址并发起请求 Uri url = Uri.parse(videoUrl); http.Response response = await http.get(url); // 解析返回的HTML内容 dom.Document html = parser.parse(response.body); // 提取meta标签中的关键词内容 final keywords = html .querySelectorAll('meta[name="keywords"]') .map((meta) => meta.attributes['content']?.trim() ?? '') .where((keyword) => keyword.isNotEmpty) .toList(); return keywords; } catch (e) { print('获取关键词失败: $e'); return []; } } // 使用示例 void main() async { List<String> keywords = await getYouTubeKeywords('https://www.youtube.com/watch?v=9ZfRE_DN9a0'); print('视频关键词: $keywords'); }
核心逻辑说明
- HTTPS请求:
http.get默认支持HTTPS协议,直接传入YouTube视频的HTTPS地址即可完成安全请求,无需额外配置。 - HTML解析:通过
html包解析页面DOM结构,用选择器定位到name="keywords"的meta标签,提取其content属性值(原示例中用innerHtml不准确,实际关键词存在于content属性)。 - 异常处理:加入try-catch块捕获请求失败、页面结构变更等异常,避免程序崩溃。
注意事项
- YouTube页面结构可能随时调整,基于DOM解析的方法存在失效风险。
- 频繁发送未授权请求可能触发反爬机制,导致请求被拦截。
- 部分视频未设置关键词,此时会返回空列表。
内容的提问来源于stack exchange,提问作者user17595065
相关产品推荐
相关产品推荐

