python - python 3.6中的youtube视频评论下载器
问题描述
“无法写入 csv 文件”
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.write("comments\n")
STAGGER_TIME = 1
打开 url 和屏幕名称(屏幕名称是为其返回结果的用户的屏幕名称)
url = "https://www.googleapis.com/youtube/v3/commentThreads?key=AIzaSyCYkTUjKgFGcKDnkNQMgSBbb4obnqIzUEM&textFormat=plainText&part=snippet&videoId=Ye8mB6VsUHw&maxResults=20"
这需要一个 python 对象并将其转储到一个 JSON 字符串
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")
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()
“得到一个错误”
UnicodeEncodeError Traceback (most recent call last)
<ipython-input-4-cbf9fd267c8a> in <module>()
28 print(results)
29 results=results.replace(",", "")
---> 30 csvFile.write(results)
31 csvFile.write('\n')
32 time.sleep(STAGGER_TIME)
~\Anaconda3\lib\encodings\cp1252.py in encode(self, input, final)
17 class IncrementalEncoder(codecs.IncrementalEncoder):
18 def encode(self, input, final=False):
---> 19 return codecs.charmap_encode(input,self.errors,encoding_table)[0]
20
21 class IncrementalDecoder(codecs.IncrementalDecoder):
UnicodeEncodeError: 'charmap' codec can't encode characters in position 20-23: character maps to <undefined>
.encode(utf-8) 给出一个打字错误
results= result["items"][i].get('snippet').get("topLevelComment").get('snippet').get("textDisplay").encode(utf-8) did help as after using it as it gives
34 results=results.replace(",", "")
TypeError: a bytes-like object is required, not 'str'
解决方案
推荐阅读
- maven - Maven 无法初始化 ear 模块:未知工件类型 [zip] 用于发布文档
- python - 如何使用 pandas idxmax 函数获取值?
- python - 如何根据某些条件将字典列表拆分为单独的字典列表?
- django-rest-framework - 在获取请求函数中传递 pk
- javascript - Angular Ionic 中的分页,带有下一个和上一个按钮
- sql-server - 一对外键引用一个带有一对 PrimaryKey 的表
- validation - 跨不同项目构建验证
- python - MySQLdb._exceptions.OperationalError: (1698, "Access denied for user 'root'@'localhost'")
- c++ - 交叉编译 wxGtk
- linkedin - Linkedin ugc 帖子未正确发布