gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:20:09 27 4
gpt4 key购买 nike

我正在通过 Python 使用 YouTube API。我已经可以收集特定视频的所有评论,包括作者姓名、日期和评论内容。
我还可以使用单独的代码提取特定作者的个人信息(年龄、性别、兴趣……)。但我不能在一处使用它们。即我需要收集视频的所有评论,包括评论作者的姓名以及所有这些作者的个人信息。下面是我开发的代码。但我收到一个“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 以及所有内容如何相互关联。我编写了包装类,可以处理多种类型的 Feed 或条目,并“修复”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

...

def myget(url,service=None):

def myconverter(x):
logfile = url.replace('/',':')+'.log'
logfile = logfile[len('http://gdata.youtube.com/feeds/api/'):]
my_logger.info("myget: %s" % url)

if service == 'user_feed':
return gdata.youtube.YouTubeUserFeedFromString(x)

if service == 'comment_feed':
return gdata.youtube.YouTubeVideoCommentFeedFromString(x)

if service == 'comment_entry':
return gdata.youtube.YouTubeVideoCommentEntryFromString(x)

if service == 'video_feed':
return gdata.youtube.YouTubeVideoFeedFromString(x)

if service == 'video_entry':
return gdata.youtube.YouTubeVideoEntryFromString(x)


return api.GetWithRetries(url,
converter=myconverter,
num_retries=3,
delay=2,
backoff=5,
logger=my_logger
)


mapper={}
mapper[api.GetYouTubeUserFeed]='user_feed'
mapper[api.GetYouTubeVideoFeed]='video_feed'
mapper[api.GetYouTubeVideoCommentFeed]='comment_feed'

https://gist.github.com/2303769 data/service.py(路由)

关于python - 如何使用 Python YouTube API 收集特定视频评论的所有作者的个人信息(年龄、性别......),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012086/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com