Скачать посты вконтакте, выгрузить все записи вк.

С его помощью можно наполнить папку жесткого диска отличными постами для вконтакте, скачанные со стены любой группы.

Если вы еще не пользовались программой Вкдог рекомендую скачать ее и установить на ПК, зарегистрироваться и войти под своим логином.

Подготовим программу для пользования, а точнее добавим аккаунт вконтакте, успешно залогинемся, вставим ключ антикапчи. Как это сделать писалось ранее в этой статье.

Добавление задания на граббинг стены вконтакте с сохранением на компьютер

Жмем кнопку «+ Добавить задание ».

Выполняем последовательно три пункта:

  1. Придумаем и запишем название данного задания, к примеру «мультиварки на компьютер». Странновато, но зато мне понятно, что группа про мультиварки а задание спарсить посты на компьютер. Главное писать, чтоб было понятно вам – название не влияет ни на что.
  2. Выбираем во вкладках тип задания «Граббер на комп».
  3. Из списка аккаунтов нужно указать тот, которым будет осуществляться данное действие.

Жмем «Продолжить».

Появляется окно с названием – «Сохранять на компьютер ».

В нем заполняем два поля:

Откуда грабить. В строку поиска сообществ социальной сети Вконтатке вбиваем ключевые слова, по которым будем искать группу для граббинга. Из выдачи подберем необходимую, я рекомендую вручную открывать и проверять наличие качественных постов для скачивания. Находим нужную и копируем в адресной строке браузера ссылку на нее. Вставляем в строчку (откуда грабить).

В какую папку грабить. Жмем «Обзор» - указываем путь к папке, в которую будем сохранять посты. Если таковой не имеется, то ее нужно создать. Ок - Продолжаем.

Настройка граббинга на компьютер – вирусность постов

В новом окне сразу бросается в глаза верхняя строка, отображающая количество постов в паблике. У меня это 1571.

Я ставлю галочку на случайном копировании постов из группы. Потому что не важна последовательность, я скачаю их все. Интервал между постами ставлю «1». Это ускорит процесс граббинга.

  • Минимум лайков – 20
  • Минимум репостов – 5
  • Минимум комментариев – 0 (это не принципиально).
Напомню, что данные значения выставлять нужно под свои задачи. Чем выше требования будут указаны – тем меньше постов программа награбит, но их качество будет высоко. То есть они востребованы целевой аудиторией!

ГОТОВО! – задание на граббинг постов из вконтакте на компьютер добавлено.

В истории действий видно, как программа грабит посты с указанной группы в папку на жестком диске.

Сохраняются они в файл с расширением.XML.

Выводы

Данный тип задания подходит для тех, кому нужны посты в формате XML. Скачав их с группы по определенным параметрам, Вкдог сохраняет их в один файл.

Вкдог очень полезная программа, которая полна очень полезными функциями для качественного наполнения сообществ вконтакте. Разработчики, стараются отвечать современным потребностям администраторов и СММ специалистов по социальной сети Вконтакте.

По этому если вы планируете зарабатывать на ведении групп вконтакте, то вам просто не обойтись без этого помощника! . Наслаждайтесь работой хорошего софта!

Чтобы выгрузить все записи из группы Вконтакте или сохранить посты Вк вам нужно скачать Вкдог и воспользоваться следующей функцией.

Выгрузить все записи из группы вк и сохранить посты:

Граббер на комп.

С помощью этой функции вы можете скачать и сохранить все записи со стены Вк. Грабер может копировать фото вконтакте или сразу сохранить текст и фото (ссылку в вк).
Копировать можно в специальный XML файл (привязка текст+ ссылка на картинку в ВК);
Либо можно скачать фото в папку на комп, а текст сохранить в блокнот, если вам нужна такая возможность- пишите в нашу ТП.
В Вкдоге предусмотрен отдельный парсер текста постов со стены вк на ваш компьютер.

Непростая ситуация обстоит с сохранением видео вконтакте, т.к. это весьма технически затратный процесс. Далеко не у всех юзеров выдержит компьютер и соединение с интернетом, если сохранять видео в несколько потоков или даже в 1 поток, но в фоновом режиме, т.е. чтобы вы могли заниматься чем-то еще помимо этого. Исходя из этого мы не скачивание видео на комп и не перезаливаем его в Вк, поэтому при обычном грабинге видео из источника и постинге к вам в группу Вк, в пост будет добавлено видео из источника, т.е. с его ссылкой, учтите это, пожалуйста.

Также не очень легко для вашего компьютера и соединения с интернетом сохранять на комп и выгружать к вам в группу альбомы фоток Вконтакте, поэтому их мы тоже не парсим в ваших же интересах.

Мы всегда открыты для ваших предложений, и если вам нужно спарсить или выгрузить все записи со стены вк, или что-то другое и нестандартное, то обязательно пишите нам.

Я уже давно заметил, что данные в социальных сетях хранятся плохо. Например, сделанный вами репост окажется пустым, если автор оригинальной записи ее удалит. Недавние проблемы с аудиозаписями в vk стали последней каплей, и я решил сохранить локально все данные, которые могут представлять интерес на случай ядерной войны. Поискав готовые решения, я не нашел ничего, что бы устроило меня, поэтому за несколько дней был написан скрипт на Python.

Цели

Сохранить все, что можно: аудиозаписи, документы, стену. Со стены нужно утащить все приложения к постам, и комментарии со всеми приложениями тоже лишними не будут. Нужно это как минимум затем, чтобы сохранились все посты с музыкой и комментарии, где друзья отправляли хорошие треки или котиков. Сразу скажу, что в моих целях не было читабельного бэкапа дополнительной информации (лайки, время создания записи и прочее).

За дело!

Процесс создания подобного приложения уже не раз описан на хабре, поэтому повторять все подробности не стану, опишу шаги работы вкратце, а еще скажу пару слов о пролемах. Чтобы статья не была перегружена исходниками, в конце будет ссылка на github.
Соображения по ходу разработки
  • Прежде всего, потребуется завести себе id приложения . Важно, чтобы тип был standalone , иначе некоторые методы vk api будут недоступны.
  • Еще нужен id пользователя, данные которого будем сохранять. Свой найти можно на странице настроек
  • Чтобы приложение работало, нужно разрешение пользователя, а точнее, access token. Прямого неинтерактивного способа получить токен нет, можно парсить страницу авторизации, но проще - попросить пользователя нажать на кнопку в браузере и скопировать url. За это отвечает функция auth():
    url = "https://oauth.vk.com/oauth/authorize?" + \ "redirect_uri=https://oauth.vk.com/blank.html&response_type=token&" + \ "client_id=%s&scope=%s&display=wap" % (args.app_id, ",".join(args.access_rights)) print("Please open this url:\n\n\t{}\n".format(url)) raw_url = raw_input("Grant access to your acc and copy resulting URL here: ") res = re.search("access_token=(+)", raw_url, re.I)
  • У запросов vk api есть ограничение: не более пяти в секунду. Если обращаться к серверу слишком часто, он ответит ошибкой. Это достаточно удобно: по коду ошибки можно понять, что скрипт работает слишком быстро, подождать какое-то время и повторить запрос.
    if result == 6: # too many requests logging.debug("Too many requests per second, sleeping..") sleep(1) continue
  • Периодически сервер vk требует решить каптчу, подозревая, что клиент - бот. В общем-то, правильно подозревает. Чтобы процесс сохранения не прерывался, приходится просить пользователя перейти по ссылке на картинку, разгадать каптчу и вбить ответ. Это вынесено в функцию с незамысловатым именем captcha():
    print("They want you to solve CAPTCHA. Please open this URL, and type here a captcha solution:") print("\n\t{}\n".format(data)) solution = raw_input("Solution = ").strip() return data, solution
  • Ссылки, дополнительную информацию вроде количества лайков и ответы сервера в JSON будем писать в файлы, на всякий случай.
  • К некоторым аудиозаписям приложен текст песни, что тоже имеет смысл сохранять.
  • Имена файлов могут быть некорректны для файловой системы, поэтому приходится избавляться от некоторых символов. Готового «правильного» решения я не нашел, поэтому пришлось изобрести мини-велосипед:
    result = unicode(re.sub("[^+=\-()$!#%&,.\w\s]", "_", name, flags=re.UNICODE).strip())
  • Еще одна проблема с именами файлов: могут совпадать, например в случае с документами. Для этого к имени файла добавим (n), где n - первое число, дающее уникальное имя файла.
    #file might exist, so add (1) or (2) etc counter = 1 if exists(fname) and isfile(fname): name, ext = splitext(fname) fname = name + " ({})".format(counter) + ext while exists(fname) and isfile(fname): counter += 1 name, ext = splitext(fname) fname = name[:-4] + " ({})".format(counter) + ext
Продолжим
Код обращения к api взят из статьи хабраюзера dzhioev , и добавлена обработка ситуаций, описанных выше. Чтобы было, что сохранять (в случае с обработкой стены), надо сначала узнать количество постов:
#determine posts count (response, json_stuff) = call_api("wall.get", [("owner_id", args.id), ("count", 1), ("offset", 0)], args) count = response
Дальше запрашиваем каждый пост по отдельности и разбираем его
for x in xrange(args.wall_start, args.wall_end): (post, json_stuff) = call_api("wall.get", [("owner_id", args.id), ("count", 1), ("offset", x)], args) process_post(("wall post", x), post, post_parser, json_stuff)
Результат запроса - это набор данных в JSON, которые разбираются в стандартные для python"а структуры с помощью json.loads() из стандартной библиотеки. В итоге, имеем хэш-массив, в котором некоторые поля (ключ-значение) несут полезную нагрузку, а остальные нас не интересуют. Чтобы руками не писать, какое поле каким методом обрабатывать, воспользуемся мощью рефлексии: будем искать метод, имя которого совпадает с интересующим ключом.
for k in raw_data.keys(): try: f = getattr(self, k) keys.append(k) funcs.append(f) except AttributeError: logging.warning("Not implemented: {}".format(k)) logging.info("Saving: {} for {}".format(", ".join(keys), raw_data["id"])) for (f, k) in zip(funcs, keys): f(k, raw_data)
Парсим
Теперь нужно разбираться с полями ответа. Интересные - это attachments, text, comments. Attachments - это список приложений к посту (аудио, картинки, документы, заметки), надо уметь скачивать каждый тип. Определяемся, каким методом обрабатывать каждый attachment, аналогичным способом: по типу аттача ищем метод с подходящим именем. Вот пример «качалки» для аудио:
def dl_audio(self, data): aid = data["aid"] owner = data["owner_id"] request = "{}_{}".format(owner, aid) (audio_data, json_stuff) = call_api("audio.getById", [("audios", request), ], self.args) try: data = audio_data name = u"{artist} - {title}.mp3".format(**data) self.save_url(data["url"], name) except IndexError: # deleted:(logging.warning("Deleted track: {}".format(str(data))) return # store lyrics if any try: lid = data["lyrics_id"] except KeyError: return (lyrics_data, json_stuff) = call_api("audio.getLyrics", [("lyrics_id", lid), ], self.args) text = lyrics_data["text"].encode("utf-8") ...
К сожалению, изъятые по просьбе правообладателей аудиозаписи больше не доступны, для них возвращается пустой ответ.

А остальное?

Методы обработки картинок, текста, заметок, закачки документов и остальное - в github . Скажу только, что все аналогично приведенным примерам. Еще скрипт имеет аргументы командной строки, их описывать в статье смысла нет. Примеры и прочие подробности - в readme .
TODO
Я не стал делать сохранение фотоальбомов, потому что у меня там ничего важного не хранится, да и код kilonet из его статьи неплохо работает. Еще не сохраняются видеозаписи и заметки, мне это показалось не сильно нужным.
На последок
Код далек от идеала и не отличается отсутствием костылей, но выполняет поставленную задачу. Надеюсь, кому-то пригодится моя поделка, для сохранения своих записей/документов/музыки, или для обучения.
UPD 18.12.2016
Юзер hiwent говорит, что с 16.12.2016 года vk закрыли возможность использовать API для работы с аудиозаписями. В связи с этим, функционал скрипта, предусмотренный для сохранения аудиозаписей, не работает. В связи с этим можно попробовать «прикинуться» родным приложением vk, апример андроид-версией, или kate mobile. Для них возможность работать с аудиозаписями никуда не пропадет, хотя может быть методы отличаются.

Прогрессивное человечество прекрасно осведомлено о том, что такое социальные сети. При регулярном использовании сайта «в контакте» для общения и налаживания деловых связей, рано или поздно возникает необходимость почистить стену. Стена «в контакте» имеет свойство накапливать хлам в виде ненужных сообщений, случайных записей, спама. Для оптимизации социальной сети разработаны специальные программы для чистки в контакте воспользовавшись которыми можно быстро почистить стену.

Способ очистки первый — скрипт (расширение) VkOpt 2.x

Для того, чтобы быстро почистить стену, нужно установить расширение, чтобы браузер работал. Следует перейти по ссылке http://vkopt.net/download/ - для chrome (для других браузеров смотрите на сайте разработчика ).

После установки скрипта VkOpt 2.x необходимо снова перезапустить браузер, чтобы расширение начало функционировать. Затем следует зайти на vk.com, на главную страницу. На стене появится вкладка «действия», под ней закреплены следующие команды:

  • получение ссылок на фотографии
  • очистка стены

Нам необходимо произвести чистку страницы, поэтому мы выбираем второе. После выполнения действия появиться окно с предложением удалить ненужную информацию с одной, либо с обеих страниц. Если полностью оптимизировать одну страницу, вся информация на другой странице останется. Можно также очистить полностью всю стену.

Способ очистки второй — программа vkbot

Оптимизировать сайт в контакте поможет универсальная программа vkbot. Ее расширенный функционал поможет в один клик очистить стену. Для этого нужно скачать программу здесь http://vkbot.ru/ . После того как программный продукт будет установлен, нужно авторизоваться. Затем нужно совершить следующие действия:

  • выбрать раздел профиль
  • нажать кнопку чистка (удаление)
  • выбрать команду «очистить стену»

После этого программа попросит подтвердить свои действия. Нужно нажать ОК. Затем можно наблюдать за процессом очистки стены. По окончании процесса программа уведомит пользователя о том, что процесс очистки стены завершен.