Привет всем! <br/> <br/> У меня есть задача: необходимо извлечь только текст из постов ВКонтакте. У меня есть примерно 15 тысяч ссылок в формате - <a href="https://vk.com/wall-22522055_2191390" rel="nofollow">https://vk.com/wall-22522055_2191390</a>. Не знаю, как реализовать данное решение на Python. Я смогла сделать только вот это: <br/> <br/> <pre><code class="python">from vk_api import VkApi from vk_api.exceptions import ApiError # Ваш токен доступа token = 11111' # Создаем объект VKSession vk_session = VkApi(token=token) # Получаем объект VK_API vk = vk_session.get_api() try: text_post = vk.wall.getById()</code></pre> <br/> <br/> Буду благодарна за любую помощь!
Для извлечения текста из постов ВКонтакте с использованием Python и библиотеки `vk_api`, можно воспользоваться методом `wall.getById()`, как вы уже начали. Вам нужно будет передать идентификаторы постов в нужном формате. Вот пример, как можно использовать вашу информацию и ссылки для получения текста постов: ```python from vk_api import VkApi from vk_api.exceptions import ApiError # Ваш токен доступа token = 'ваш_токен' # Создаем объект VKSession vk_session = VkApi(token=token) # Получаем объект VK_API vk = vk_session.get_api() # Список ссылок на посты ВКонтакте post_links = [ "https://vk.com/wall-22522055_2191390", # Добавьте сюда остальные ссылки ] # Список для хранения текстов постов texts = [] for link in post_links: try: # Получаем идентификатор поста owner_id, post_id = link.split('/')[-1].split('_') # Делаем запрос к API для получения поста post_info = vk.wall.getById(posts=[f"{owner_id}_{post_id}"]) # Извлекаем текст из поста if post_info: post_text = post_info[0].get('text', '') texts.append(post_text) print(f"Пост {link}: {post_text}") except ApiError as e: print(f"Ошибка при получении поста {link}: {e}") # Теперь у вас есть список текстов постов в переменной texts ``` ### Что делает этот код: 1. Импортирует необходимые библиотеки. 2. Создает объект `VkApi` с вашим токеном доступа. 3. Определяет список ссылок на посты ВКонтакте. 4. Для каждой ссылки: - Извлекает `owner_id` и `post_id` из ссылки. - Вызывает метод `wall.getById()` для получения информации о посте. - Извлекает текст поста и добавляет его в список. 5. Выводит текст каждого поста в консоль. ### Примечание: - Убедитесь, что ваш токен доступа имеет необходимые разрешения (scope) для доступа к публичным постам. - Если количество постов большое, может потребоваться обработка ограничений API. Например, можно реализовать задержку между запросами или обрабатывать ошибку превышения лимита.
Вроде бы так, но точно не проверялfrom vk_api import VkApi from vk_api.exceptions import ApiError import re token = '1111' vk_session = VkApi(token=token) vk = vk_session.get_api() # Функция для извлечения идентификатора поста из ссылки def extract_post_id(url): match = re.search(r'wall(-?\d+_\d+)', url) if match: return match.group(1) return None # Список ссылок на посты post_urls = [ 'https://vk.com/wall-22522055_2191390', ] # Извлекаем идентификаторы постов post_ids = [extract_post_id(url) for url in post_urls if extract_post_id(url)] # Получаем текст постов try: posts = vk.wall.getById(posts=','.join(post_ids)) for post in posts: print(f"ID: {post['id']}, Текст: {post['text']}") except ApiError as e: print(f"Ошибка: {e}")