首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用python的youtube视频评论下载器

使用python的youtube视频评论下载器
EN

Stack Overflow用户
提问于 2018-06-11 05:37:58
回答 1查看 253关注 0票数 0

“使用json文件获取youtube视频评论”

代码语言:javascript
复制
import simplejson as json
from urllib.request import urlopen
import sys
import time
import csv
import os
import io
os.chdir(r'C:\Users\adity\Desktop\data science')
csvFile =open('test1.csv',"w")
#csvFile =open('test.tsv',"w")
#writer = csv.writer(csvFile,delimiter=',')
#writer.writerow('Comments')
csvFile.write("comments\n")
STAGGER_TIME = 1 

# open the url and the screen name 
# (The screen name is the screen name of the user for whom to return results for)
url = "https://www.googleapis.com/youtube/v3/commentThreads?key=AIzaSyCYkTUjKgFGcKDnkNQMgSBbb4obnqIzUEM&textFormat=plainText&part=snippet&videoId=Ye8mB6VsUHw&maxResults=100"

“这将获取python对象并将其转储为字符串,该字符串是该对象的JSON表示形式。”

代码语言:javascript
复制
url1=urlopen(url)
#data = json.load(urllib2.urlopen(url))
result = json.load(url1)


# print the result
itemList= result.get("items")
length=len(itemList)

for i in range(0,length):
    results= (result["items"][i].get('snippet').get("topLevelComment").get('snippet').get("textDisplay")).encode("utf-8")
    print(results)
    results=results.replace(",", "")
    #print (result["items"][i].get('snippet').get("topLevelComment").get('snippet').get("textDisplay")).encode("utf-8")
    #writer.writerow((result["items"][i].get('snippet').get("topLevelComment").get('snippet').get("textDisplay")).encode("utf-8"))
    csvFile.write(results)
    csvFile.write('\n')
    time.sleep(STAGGER_TIME)

csvFile.close()

“获取错误: TypeError:需要类似字节的对象,而不是'str”

代码语言:javascript
复制
TypeError                                 Traceback (most recent call last)
<ipython-input-112-a5225431e178> in <module>()
     32         results= (result["items"][i].get('snippet').get("topLevelComment").get('snippet').get("textDisplay")).encode("utf-8")
     33         print(results)
---> 34         results=results.replace(",", "")
     35         #print (result["items"][i].get('snippet').get("topLevelComment").get('snippet').get("textDisplay")).encode("utf-8")
     36         #writer.writerow((result["items"][i].get('snippet').get("topLevelComment").get('snippet').get("textDisplay")).encode("utf-8"))

TypeError: a bytes-like object is required, not 'str'
EN

回答 1

Stack Overflow用户

发布于 2018-06-11 05:53:32

代码语言:javascript
复制
results= (result["items"][i].get('snippet').get("topLevelComment").get('snippet').get("textDisplay")).encode("utf-8")

这里的责任在于最后一部分.encode("utf-8"),它将字符串转换为字节,这很好,除非您尝试使用常规字符串的replace。建议(最适合你的):

选项1如果可以,只需从行中删除该部分

代码语言:javascript
复制
results = result["items"][i].get('snippet').get("topLevelComment").get('snippet').get("textDisplay")

选项2在尝试replace之前添加decode

代码语言:javascript
复制
results = results.decode().replace(",", "")

选项3使用具有适当字节的replace

代码语言:javascript
复制
results = results.replace(b",", b"")

选项1是理想的选项,因为它更简单,并且与其余代码更兼容(不需要首先转换为字节,我看不到它有什么作用)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50788282

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档