Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python YouTube API收集特定视频评论所有作者的个人信息(年龄、性别…)_Python_Youtube Api - Fatal编程技术网

如何使用Python YouTube API收集特定视频评论所有作者的个人信息(年龄、性别…)

如何使用Python YouTube API收集特定视频评论所有作者的个人信息(年龄、性别…),python,youtube-api,Python,Youtube Api,我将YouTube API与Python结合使用。我已经可以收集特定视频的所有评论,包括作者姓名、评论日期和内容。 我还可以使用一段单独的代码,提取特定作者的个人信息(年龄、性别、兴趣等)。 但我不能在一个地方使用它们。i、 e.我需要收集视频的所有评论,包括评论作者的姓名以及所有这些作者的个人信息。 下面是我开发的代码。但是我得到了一个“RequestError”,我不知道如何处理,问题出在哪里 import gdata.youtube import gdata.youtube.servic

我将YouTube API与Python结合使用。我已经可以收集特定视频的所有评论,包括作者姓名、评论日期和内容。
我还可以使用一段单独的代码,提取特定作者的个人信息(年龄、性别、兴趣等)。 但我不能在一个地方使用它们。i、 e.我需要收集视频的所有评论,包括评论作者的姓名以及所有这些作者的个人信息。 下面是我开发的代码。但是我得到了一个“RequestError”,我不知道如何处理,问题出在哪里

 import gdata.youtube
import gdata.youtube.service

yt_service = gdata.youtube.service.YouTubeService()
f = open('test1.csv','w')
f.writelines(['UserName',',','Age',',','Date',',','Comment','\n'])

def GetAndPrintVideoFeed(string1):

        yt_service = gdata.youtube.service.YouTubeService()
        user_entry = yt_service.GetYouTubeUserEntry(username = string1)
        X = PrintentryEntry(user_entry)
        return X

def PrintentryEntry(entry):

        # print required fields where we know there will be information
        Y = entry.age.text
        return Y

def GetComment(next1):

        yt_service = gdata.youtube.service.YouTubeService()
        nextPageFeed = yt_service.GetYouTubeVideoCommentFeed(next1)

        for comment_entry in nextPageFeed.entry:

            string1 = comment_entry.author[0].name.text.split("/")[-1]
            Z = GetAndPrintVideoFeed(string1)
            string2 = comment_entry.updated.text.split("/")[-1]
            string3 = comment_entry.content.text.split("/")[-1]

            f.writelines( [str(string1),',',Z,',',string2,',',string3,'\n'])

        next2 = nextPageFeed.GetNextLink().href
        GetComment(next2)

video_id = '8wxOVn99FTE'
comment_feed = yt_service.GetYouTubeVideoCommentFeed(video_id=video_id)

for comment_entry in comment_feed.entry:

        string1 = comment_entry.author[0].name.text.split("/")[-1]
        Z = GetAndPrintVideoFeed(string1)
        string2 = comment_entry.updated.text.split("/")[-1]
        string3 = comment_entry.content.text.split("/")[-1]

        f.writelines( [str(string1),',',Z,',',string2,',',string3,'\n'])

next1 = comment_feed.GetNextLink().href
GetComment(next1)

我认为您需要更好地了解Youtube API以及所有内容之间的关系。我已经编写了包装器类,可以处理多种类型的提要或条目,并“修复”gdata不一致的参数约定

下面是一些片段,展示了如何在不太困难的情况下推广刮取/爬行

我知道这不是直接回答你的问题,这是更高层次的设计,但如果你要做大量的youtube/gdata数据拉取,这是值得考虑的

def get_feed(thing=None, feed_type=api.GetYouTubeUserFeed):

    if feed_type == 'user':
        feed = api.GetYouTubeUserFeed(username=thing)

    if feed_type == 'related':
        feed = api.GetYouTubeRelatedFeed(video_id=thing)

    if feed_type == 'comments':
        feed = api.GetYouTubeVideoCommentFeed(video_id=thing)

    feeds = []
    entries = []

    while feed:
        feeds.append(feed)
        feed = api.GetNext(feed)

    [entries.extend(f.entry) for f in feeds]

    return entries


data/service.py(路由)

我认为您需要更好地了解Youtube API以及所有内容之间的关系。我已经编写了包装器类,可以处理多种类型的提要或条目,并“修复”gdata不一致的参数约定

下面是一些片段,展示了如何在不太困难的情况下推广刮取/爬行

我知道这不是直接回答你的问题,这是更高层次的设计,但如果你要做大量的youtube/gdata数据拉取,这是值得考虑的

def get_feed(thing=None, feed_type=api.GetYouTubeUserFeed):

    if feed_type == 'user':
        feed = api.GetYouTubeUserFeed(username=thing)

    if feed_type == 'related':
        feed = api.GetYouTubeRelatedFeed(video_id=thing)

    if feed_type == 'comments':
        feed = api.GetYouTubeVideoCommentFeed(video_id=thing)

    feeds = []
    entries = []

    while feed:
        feeds.append(feed)
        feed = api.GetNext(feed)

    [entries.extend(f.entry) for f in feeds]

    return entries

data/service.py(路由)