📜  如何使用 Youtube API 提取 YouTube 评论 – Python(1)

📅  最后修改于: 2023-12-03 15:08:24.603000             🧑  作者: Mango

如何使用 YouTube API 提取 YouTube 评论 – Python

在本文中,我们将介绍如何使用 Python 中的 Google API 客户端库和 YouTube Data API v3 来提取 YouTube 视频下的评论。

环境设置

首先,需要在Google Cloud Console创建一个项目并启用 YouTube 数据 API v3、Google Sheets API 和 Google Drive API。接着,在“凭据”选项卡中创建一个 OAuth 2.0 客户端 ID。将生成的客户端 ID 和客户端密钥保存到文件中。

然后,使用以下命令安装 google-auth 和 google-api-python-client:

pip install google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client

在本教程中,我们将以以下形式读取凭据:

import google.auth
from google.oauth2.credentials import Credentials

creds = None
if not creds or not creds.valid:
    flow = InstalledAppFlow.from_client_secrets_file(
        'client_secrets.json', ['https://www.googleapis.com/auth/youtube.force-ssl'])
    creds = flow.run_local_server(port=0)
    Storage('token.pickle').put(creds)

youtube = googleapiclient.discovery.build(
    'youtube', 'v3', credentials=creds)

你需要将 client_secrets.json 文件(由 Google Cloud Console 提供)存储在当前代码文件夹中。

获取视频 ID

我们可以使用 Videos: list 方法来获取 YouTube 视频。

import googleapiclient.discovery

def get_video_comments(youtube, **kwargs):
    comments = []
    results = youtube.commentThreads().list(**kwargs).execute()

    while results:
        for item in results['items']:
            comment = item['snippet']['topLevelComment']['snippet']['textDisplay']
            comments.append(comment)

        # 检查是否有更多的页面
        if 'nextPageToken' in results:
            kwargs['pageToken'] = results['nextPageToken']
            results = youtube.commentThreads().list(**kwargs).execute()
        else:
            break

    return comments

def get_video_id(youtube, url):
    video_id = url.split("v=")[1]
    index = video_id.index('&') if '&' in video_id else None
    if index:
        video_id = video_id[:index]
    return video_id

video_url = 'https://www.youtube.com/watch?v=dQw4w9WgXcQ'
video_id = get_video_id(youtube, video_url)
获取评论

然后,可以使用 CommentThreads: list 方法来获取视频下的评论。

video_comments = get_video_comments(youtube=youtube, part='snippet', videoId=video_id)

现在,video_comments 包含以字符串形式表示的所有视频评论。你可以使用 Python 的文件 IO 操作将其保存到文件中,也可以选择将数据上传到 Google Sheets。

结论

本文介绍了如何使用 Python 和 Google API 客户端库来提取 YouTube 视频的评论。请注意这是 Google API 的使用示例,故其免费的使用可能有限制。请查看 API 文档以了解更多详细信息。