Скрейпинг криптовалютных новостей. Часть 2
С чего начиналось
В прошлой статье мы написали скрипт, забирающий заголовки новостей об Ethereum со страницы Яндекс.Новостей:API VK.com
Настало время познакомиться с API Вконтакте! Он дружелюбен и воистину функционален (в отличие от своего Инстаграмовского собрата). Чтоб им пользоваться нужно получить токен пользователя, а для этого требуется зарегистрировать свое приложение. Приступим:Логинимся в ВК и переходим в раздел “Разработчикам”:

Далее идем в “Мои приложения”:

Нажимаем “Создать приложение”:


Идем в настройки созданного приложения и записываем идентификационные ключи:

Следующий шаг - получение токена пользователя (еще бывают токены сообществ) от чьего имени будут производиться действия скрипта, а именно отсылка сообщения в беседу. Документация API ВК гласит:

То есть необходимо сформировать URL и вручную перейти по нему. Вспоминаем ID нашего приложения:
https://oauth.vk.com/authorize?client_id=6831592&display=page&redirect_uri=https://oauth.vk.com/blank.html&scope=messages,offline&response_type=token&v=5.73
Заменяем значение client_id на свой и переходим по этой ссылке.
Авторизуемся, если сессия ВК не активна, и подтверждаем права приложения:

После подтверждения редиректимся на URL, содержащий наш токен:

Забираем токен из URL’а и сохраняем
https://oauth.vk.com/blank.html#access_token=0f3570a999364f76c62ffc2b41007bc98e75609e25fa8272systop422932087442a8616cf614d06785a11&expires_in=0&user_id=4107877
0f3570a999364f76c62ffc2b41007bc98e75609e25fa8272systop422932087442a8616cf614d06785a11
https://api.vk.com/method/messages.send?access_token=0f3570a999364f76c62ffc2b41007bc98e75609e25fa8272systop422932087442a8616cf614d06785a11&chat_id=162&message=test&v=5.73
Рассмотрим параметры GET-запроса:
- адрес - https://api.vk.com/method/messages.send
- access_token - полученный токен
- chat_id - идентификатор беседы ВКонтакте:

- message - текст сообщения
- v - актуальная версия API (параметр необязателен, но улучше его указывать, чтоб в будущем не наблюдать непредсказуемых ситуаций)
require 'phantomjs' require 'net/http' news = Phantomjs.run("file.js") puts news token = "0f3570a999364f76c92ffc2b41007bc98e75609e25fa8272d7f507422932087442a8616cf614d06785a11" method = "messages.send" chat_id = "162" version = "5.73" uri = URI("https://api.vk.com/method/#{method}") params = { access_token: token, chat_id: chat_id, message: news, v: version } uri.query = URI.encode_www_form(params) res = Net::HTTP.get_response(uri) puts res.body

Возвращенный идентификатор сообщения говорит о том, что запрос прошел успешно - можно проверить свои сообщения=)

Запуск по расписанию
Поможет в этом Cron - это стандартная утилита в Линуксе, позволяющая запрограммировать выполнение каких либо действий системой по расписанию (в нашем случае - запуск скрипта).В прошлой статье мы установили гем whenever для удобной работы с cron’ом из ruby-скрипта. Настроим его работу:
Находясь в папке проекта выполним команду wheneverize . (с точкой)

set :output, "~/systop/blog/scraping_news/part_2/script/cron_log.log" set :chronic_options, hours24: true every 1.day, at: '18:42' do command "cd /home/xander/systop/blog/scraping_news/part_2/script && ruby script.rb" end
Сохраняем и выполняем команду whenever --update-crontab - проверка и занесение нового расписания в cron.
Чтобы посмотреть все расписания в cron’е: crontab -l
Очистить cron: crontab -r
Теперь каждый день в 18:42 будем получать порцию свежих обобщенных новостей об Эфире!