import time
import csv
version = 5.95
domain = 'hearthstone'
count = 100
offset = 10
all_posts = []
def gp_parse():
token = input()
version = 5.95
domain = 'hearthstone'
count = 100
offset = 0
all_posts = []
a = []
response = requests.get('https://api.vk.com/method/wall.get', params={'access_token': token,
'v': version,
'domain': domain,
'count': count,
'offset': offset})
while offset < 1000:
data = response.json()['response']['items']
offset+= 100
all_posts.extend(data)
time.sleep(0.5)
if len(all_posts) not in a:
a.append(len(all_posts))
print(len(all_posts))
else:
pass
return all_posts
all_posts = gp_parse()
def file_writer(all_posts):
p = 'pass'
with open('group_parse.csv', 'w', encoding='utf-8') as file:
a_pen = csv.writer(file)
a_pen.writerow(('id владельца', 'описание поста', 'лайки', 'комментарии', 'репосты', 'просмотры'))
for post in all_posts:
try:
a_pen.writerow((post['owner_id'], post['text'], post['likes']['count'], post['comments']['count'],
post['reposts']['count'], post['views']['count']
)).text
except:
(csv.Error)
a_pen.writerow((p))
all_posts = gp_parse()
file_writer(all_posts)

您的编码已损坏。很难一开始就分辨出你有哪一个。尝试使用此解码器。看起来像
cp1251。尝试KOIR-8任一unicode。此外,您的 csv 文件似乎很奇怪。这不是放在桌子上的。看起来你没有正确使用它。如果您仍想使用 csv,请尝试使用pandas。这是一个用于处理表格数据的出色库。它显着地节省了数据,包括。到.csv。
拒绝这个库或类似的库,你在使用 csv 时注定会遇到问题,特别是,你可能不遵守记录格式并且你的文件将无效。您不会立即找到它的风险很大。随着时间的推移,恢复其中的数据将变得很困难。例如,这可能是因为 Yandex API 已更改或您的代码已丢失。
至于代码,你不应该声明全局变量。这是一种不好的做法,它会损害代码的可读性,并且还会导致无法测试(如果突然需要)。不值得习惯。然后你的函数变得依赖于许多变量,这些变量并不明显它们来自哪里。例如,为什么
all_posts在函数体内重新定义相同的变量时要在外部声明:使用 pandas,我们可以获得例如以下内容: