Как стать автором
Поиск
Написать публикацию
Обновить

Парсим стикеры ВКонтакте с помощью Grab

image

Сегодня я бы хотел показать, как легко можно на Python с помощью Grab в несколько строк кода получить изображения всех стикеров из ВКонтакте. Кого заинтересовало, добро пожаловать под кат.

Данная статья расчитана на новичков.

На серверах ВКонтакте картинки стикеров хранятся по таким адресам https://vk.com/images/stickers/1/128.png, в котором 1 — номер стикера, а 128 — его размер (64, 128, 256, 512).

Наша программа должна скачать все стикеры в определенную папку. Начнем.

Инициализируем объект Grab для работы с библиотекой.

from grab import Grab # импортируем из библиотеки grab метод Grab
g = Grab() # определяем в нашей программе

Отправляем запрос на картинку по адресу. Для себя я буду загружать стикеры в разрешении 128x128.

g.go('https://vk.com/images/stickers/%s/128.png' % (id)) # id - номер стикера

Для сохранения в файл полученного изображения, используем стандартные средства Python.

f = open('vkstickers/%s.png' % (id), 'wb') # открываем файл (например vkstickers/1.png) в режиме двоичной записи
f.write(g.response.body) # записываем в файл тело ответа на запрос
f.close() # закрываем файл

Теперь нам нужно автоматизировать процесс изменения ID стикера. Для этого используем цикл while.

id = 0
while id != -1:
    id += 1
    g.go('https://vk.com/images/
/%s/128.png' % (id))
    f = open('vkstickers/%s.png' % (id), 'wb')
    f.write(g.response.body)
    f.close()
    print(id) # для слежения за процессом парсинга

Чтобы наша программа во время выполнения не вышла за диапазон существующих стикеров, добавим в цикл условие, проверяющее возвращаемый код страницы.

# запрос
if g.response.code == 200:
    # сохранение в файл
else:
    id = -1

Наша программа готова. Она нам за небольшое время скачает в папку «vkstickers» все стикеры, на данный момент используемые в ВКонтакте.



Окончательный код программы:

from grab import Grab
g = Grab()
id = 0
while id != -1:
    id += 1
    g.go('https://vk.com/images/stickers/%s/128.png' % (id))
    if g.response.code == 200:
        f = open('vkstickers/%s.png' % (id), 'wb')
        f.write(g.response.body)
        f.close()
        print(id)
    else:
        id = -1

На этом все, спасибо за внимание.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.