Парсинг vk с api

import csv
import requests


def take_posts():
    api_key = 'token'
    version = '5.103'
    group_domain = 'ссылка'
    count = 100
    offset = 0
    all_posts = []

    while offset < 200:
        response = requests.get('https://api.vk.com/method/wall.get',
                                params={
                                    'access_token': api_key,
                                    'v': version,
                                    'domain': group_domain,
                                    'count': count,
                                    'offset': offset
                                })

        data = response.json()['response']['items']
        offset += 100
        all_posts.extend(data)
    return all_posts


posts = take_posts()


def check_type(post):
    if post['attachments']:
        for attachment in post['attachments']:
            if attachment['type'] == 'video':
                return 'видео'
            if attachment['type'] == 'link':
                return 'ссылка'
            if attachment['type'] == 'photo':
                return 'фотография'
    else:
        return 'Вложения отсутствуют'


def write_data(posts):
    with open('vk_data_pars.csv', 'w') as file:
        pen = csv.writer(file)
        pen.writerow(('url', 'type', 'body', 'likes'))
        test = []
        for post in posts:
            url_sec = str(post['from_id']) + '_' + str(post['id'])
            url = f'https://vk.com/over_view?w=wall{url_sec}'
            post_type = check_type(post)
            test.extend((url, post_type))
    return test


print(write_data(posts))
print(1)

Пишу парсер групп в вк
Вставляю ссылку на одну группу: работает как надо
Если меняю на любую другую, то в функции check_type не находит post['attachments']

line 33, in check_type
if post['attachments']:
KeyError: 'attachments' 

Запускаю через debug в pycharm, во всех случаях ситуация одна и та же с этим "деревом"(если можно так назвать)
Думал проблема в количестве вложений, проверил, проблема не в этом
На что обратить внимание?


Ответы (1 шт):

Автор решения: nomnoms12

Вложений может и не быть. Проверяйте через метод get.

Пример:

if post.get('attachments'):
→ Ссылка