背景知识
有一项任务要收集有关2000多种youtube视频的数据,有必要从中提取视频的名称,频道和语言。
您可以使用IMPORTXML函数从站点执行解析,但并没有帮助,因为后来证明youtube将数据存储在JSON文件中。 我不想用手整理那么多视频,所以我开始寻找自动化或至少简化这项任务的方法。
我
在Habré上找到
了15年的老文章 ,其中描述了如何获得视频观看次数,但是从youtube发布以来,YouTube更新了API,因此我需要获取一些不同的数据。
在使用youtube API和Google表解决问题的过程中,结果不仅是从预先准备的视频URL列表中提取数据,而且还通过关键字解析youtube的输出。
我对结果感到非常满意,因此决定分享自己的经验并更详细地描述该过程。
该方法本身当然不是理想的。 可以将其描述为一种简单的解决方案。 但是,直到我开始学习Python(希望这一天早晚回来)之前,我必须按照表中的老式方法进行所有操作。
准备工作
为了使解析器正常工作,如原始文章中所述,我们需要ImportJSON脚本和youtube API。
Importjson
从
github下载脚本,并通过工具>>脚本编辑器将其安装到表中。
YouTube API
我们获得了我们的API-库中的
Youtube Data API V3密钥,并为其创建了凭据。 当然,以前,如果您尚未在Google Cloud上注册,我们会创建一个帐户。
有关视频的信息存储在JSON文件中,该文件可从以下链接获得:
www.googleapis.com/youtube/v3/videos?id= {Video_ID}和键= {API_Key}和部件= {Part_Parametr}
在哪里
Video_ID-视频标识符
API_Key-您在控制台中获得的API密钥
Part_Parametr-文件中存储信息的部分
文件的部分可以有几种类型:
片段 -包含有关视频的几乎所有基本信息:
1.出版日期
2.影片标题
3.频道名称
4.频道编号
5.视频下的描述(Description)
6.视频类别(数量)
7.标签
contentDetails-包含视频的时长和分辨率。
topicDetails-以Wikipedia链接的形式包含视频类别,并带有类别名称,但是并不总是填写此部分。
统计资料1.意见
2.评论数
3.喜欢
4.不喜欢
通常,这些是您可能需要的主要部分,但是完整的列表
在帮助中 。
检索URL列表数据
以
badcomedian审查
为例,考虑解析器的工作。 为了获取有关视频的信息,我们只需要其标识符(
Video_ID ),在这种情况下为
EOWa0fmSGs8 。
我们使用ImportJSON公式和XPath查询语言来获取和构建信息。
这是服务器上的JSON文件的外观:

获取表中视图数的公式:
= ImportJSON(''https://www.googleapis.com/youtube/v3/videos?id=EOWa0fmSGs8&key= {API_Key}&part = statistics'';“ /项目/统计信息/ viewCount”;``noHeaders'')
原则上,可能不会在请求中使用XPath,但随后您将获得JSON文件的所有内容,而无需按参数进行分段。 使用XPath参数创建了必要数量的公式后,您将仅获得必要的数据,这将更易于处理。
通过关键字获取视频列表
解析输出的原理与上面的示例相同,但是请求的结构略有变化。
在这种情况下,带有视频结果的JSON文件位于链接
www.googleapis.com/youtube/v3/search?part=snippet&q= {您的查询}&类型=视频和密钥= {API_Key}
其中的type参数确切指示我们在输出中得到什么:
类型=视频 -与请求相关的视频列表
类型=频道 -
频道列表
类型=播放列表 -
播放列表列表
您还可以在请求中指定:
1.发布日期或日期范围
2.搜索的地区和语言
3.视频时长
4.结果数(默认5,最大50),等等。
参数和查询构造函数的完整列表在此处 。
要获取badcomedian的ID列表,请使用以下公式:
= ImportJSON(“ www.googleapis.com/youtube/v3/search?part=snippet&q=badcomedian&type=video&key= {API_Key}”;“ / items / id / videoId”;``noHeaders”)
ImportJSON与CONCEPT函数配合使用效果很好,该函数允许我们通过更改各种参数来执行质量分析或视频解析。
表的组织方式示例:

减法
这种解析信息方法的严重缺陷是API要求的每日限制很快就会用尽。 我没有找到限制请求数量或创建对API的一致调用的方法。 也就是说,尝试同时解析10多个键上的信息将确保导致错误-每日查询限制的结束。 因此,您必须将关键字分为几组,然后将结果另存为值。