VK & API & Python

Использование API других социальных сетей
Ответить
rust-resisting
Сообщения: 1
Зарегистрирован: 24 окт 2017, 04:03

VK & API & Python

Сообщение rust-resisting »

Всем привет!

Возник ряд вопросов при первом контакте с VK API, решил задать, полагаю, что ни где кроме как здесь - мне не помогут :)

Вводные:

Задача:

Найти искомые товары в группах, определить их стоимость и выдать в виде
Наименование - Стоимость - Ссылка
Инструмент разработки скрипта - Python, БД - sqlite3

Что делаю:

1. Поисковый запрос групп с наличием в названии слова 'Vape' - для этого используется запрос:

Код: Выделить всё

a = api.groups.search(q="vape", type="group", market="1", sort="0", count="1000", city_id=i, access_token="...")
Ограничение count=1000 принято по-умолчанию, но я чуть схитрил. В России много городов, потому запрос к поиску групп осуществляется через генератор city_id=i, где i один из 170 городов.

Таким образом я собираю почти 3000 групп. Есть ли на этом этапе где-то ошибка?

2. Получив список групп, соответствующих критериям (q="vape", type="group", market="1"), начинаем искать товары.

Код: Выделить всё

a = api.market.search(owner_id="-"+str(idg), album_id="0", count="200", q=item, access_token="...")
str(idg) - группа из списка, item - искомый товар

Таким образом, если группа открыта (нет исключения vk.exceptions.VkAPIError (Access denied: no access to this group)), а также в ней есть искомый 'item', формирую запись в БД.
Есть ли на этом этапе где-то ошибка?

3. Тайминги использую 0.7 при запросе товара, 0.3 при поиске группы.

Таким образом, я получаю из 3000 групп около 200 закрытых и какую-то цифру групп, где найден искомый товар.

Вопрос №1.
Но если я перезапущу скрипт N-раз, я получу M-разных результатов. Почему!?

Далее, приняв, что, вероятно - данная структура сбора данных собирает все данные, доступные в итерации, я решил взять бОльшее и начать анализировать стены этих групп, т.к. товары не всегда наполняют и актуализируют. То есть поиск по упоминаниям на стенах. Использовал:

Код: Выделить всё

b = api.wall.search(owner_id="-"+str(i), query="Cartel", count="20", extended="1", access_token="...")
Аналогично - ищем в i-той группе, запрос query - на упоминание
Но наткнулся на следующее:
wall.search — 1000 вызовов в сутки;
Потому что начал ловить исключения по тайм-аутам.

Вопрос 2.
Верно ли я понимаю, что 1000 групп = 1000 стен = 1000 запросов? Если да - есть ли возможность избежать кроме как инструментами VK: https://vk.com/dev/data_limits (пункт 3)

Фокус с работой по стенам, которые открыты (группы), а также в "городах" и по прочим критериям, чтобы из 3000 оставить =< 1000 возможен, но в сутки может быть более 1 запроса на поиск бренда, что сразу превысит 1000 запросов в сутки.
Может есть еще варианты анализа стен открытых групп на наличии в них упоминаний искомой сущности?

Заранее спасибо за ответы и не ругайтесь, если не там разместился!
Ответить