Парсинг пользователей вконтакте из групп. Ссылка и id группы Вконтакте. программ для парсинга в ВК

Парсинг пользователей вконтакте из групп. Ссылка и id группы Вконтакте. программ для парсинга в ВК

20.02.2019

Приветствую тебя дорогой читатель!

В этой заметке я покажу, как включить сообщения в группе в социальной сети – В контакте.

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

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

Чтобы включить сообщения в группе (паблике) необходимо выполнить простую инструкцию!

Шаг № 2.
Зайдите в нужную группу, в которой вы является администратором.

Шаг № 3.
Справа в меню выберите пункт – Управление страницей:

Находясь в настройках сообщества, перейдите чуть ниже, изменив состояние пункта настоек – “Сообщения” на “Включены”:

После этого сохраните настройки.

Теперь, перейдя на главную страницу группы, вы увидите два новых элемента:

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

На этом у меня всё, думаю, включение данной функции будет полезно для большинства администраторов крупных сообществ!

Если вам нужна помощь в создании какого-либо функционала, сайта, сервиса, тестов или калькуляторов, то готов помочь, подробнее на странице услуг.

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

«Когда появится возможность получать уведомления о комментариях в группе?»

Ответа я не получила, но зато, как-то, совершенно случайно, нашла в интернете решение этой проблемы. Да, согласна, что это не слишком удобный способ, но за не имением лучшего, считаю его сегодня самым работающим.

Комментарии в группах ВКонтакте можно все-таки увидеть

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

Надзиратель за ВКонтактом

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

При появлении новых комментариях в группе, «Надзиратель» пришлет на указанный при регистрации e-mail список имеющихся групп с количеством новых комментариев. Вроде бы все отлично, но вся информация о том, кто оставил комментарий, в каком разделе группы - не отображается. Поэтому, перейти в группу и опять просматривать все записи, фотографии и видео - не самое лучшее и продуктивное занятие. Все-таки лучше это время потратить на более важные дела.

♦ Совет!

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

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

Приложение ВКонтакте «Комментарии по дате добавления»

Второй инструмент - совершенно простое в использовании приложение, в котором в маленьком окошке нужно ввести адрес группы, паблика, страницы фотоальбома или видеозаписей. Через несколько секунд/минут на странице отобразится список комментариев со ссылкой на запись.

Обзор 35 сервисов и приложений для администраторов «ВКонтакте»

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

♦ Совет!

Это приложение не отправляет на ваш e-mail сообщения. Просто запустите его после того, как «Надзиратель» сообщит о наличии новых комментариев.

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

А так, как мы все имеем одну общую особенность, которая нас и объединяет - маленькое количество свободного времени, то уверяю, что энтузиазм закончится очень быстро.

Важное обновление в приложении «Надзиратель»

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

Уведомления о комментариях под запретом?

До сих пор я не понимаю, из каких соображений такая популярная социальная сеть, как ВКонтакте, не делает оповещение для владельцев групп и пабликов, чтобы хоть немного сделать их работу в этом отношении удобнее?

♦ Если сравнить ВКонтакте со своими конкурентами - Google+ и Facebook, то считаю, что эти социальные сети должным образом проявляют уважение и заботу о своих пользователях - владельцев групп и сообществ. Согласитесь, что с помощью уведомлений на электронную почту, можно всегда вовремя ответить на вопрос и поучаствовать в важном обсуждении. Скорость ответа на комментарий прямо пропорционально влияет на степень доверия участников к группе.

& Надеюсь, что данные инструменты будут для вас очень и очень полезными. И, как всегда, попрошу вас в комментариях написать, какими способами вы пользуетесь, чтобы вовремя увидеть события посетителей в ваших группах.

«Успевайте больше за меньшее время вместе с

Копилка эффективных советов

Система, Позволяющая Достигать Невероятных Результатов В Работе!

Концентрируйся свободно!

Подпишись на коллекцию «Копилки Эффективных Советов» и получи книгу бесплатно!

Запустите эффективную таргетированную рекламу самостоятельно, без таргетолога!

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

Система находит полученные и поставленные лайки и комментарии на личных страницах и в группах!

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

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

Наша аналитическая система сама рассчитывает совместное время в сети и взаимность между человеком и его контактами!

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

В этой статье мы постараемся объяснить, что такое push сообщения.

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

Пуш уведомления это короткие сообщения, которые приходят прямо на рабочий стол. Такое сообщение обычно содержит иконку сайта и текстовое поле, в редких случаях к нему добавляется большая картинка и кнопки. При клике на это сообщение вы попадете на заданную страницу сайта, который отправил уведомление.

Что значит push?

Название этой технологии в переводе означает – толчок.

При отправке сообщения, сайт пробрасывает установленные тексты и картинки в компании-производители браузеров, такие как Google. После чего, c помощью толчка, это сообщение доставляется в ваш браузер, который отображает его содержимое на экране. Нужно отметить, что от вас не требуется оставлять ни каких персональных данных, что делает данный канал крайне безопасным.

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

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

Туристические агентства могут предложить вам самые выгодные предложения:

А авиакомпании – уведомить о статусе рейса, на который вы зарегистрировались.

Технология push сообщений – это новая эра коммуникации между сайтами и вами. Подписавшись один раз, вы всегда будете в курсе самых последних новостей ресурса.

Пуш сообщения обладают рядом свойств:

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

Отписаться от пуш уведомления также просто, как и разрешить их получение.

Топ-5 сервисов для анализа сообществ «Вконтакте»

Мы уже рассказывали об этом в нашем блоге.

В сухом остатке.

Браузерные сообщения – это отличный инструмент для современного маркетинга, который крайне безопасен для пользователя. Технология исключает попадания спама в канал сообщений. Но нужно быть избирательным и разрешать уведомления только для тех сайтов, контент которых вам интересен или полезен.

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

Парсинг вконтакте представляет из себя сбор определенных каких-то данных будь то id друзей определенного пользователя, номера телефонов, id людей из определенной группы и так далее. Комплекс данных действий направлен на сбор целевой аудитории, которая в последующем будет использована для настройки

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

Данный способ парсинга, который будет описан ниже еще не встречал нигде, где бы он описывался. Берите на вооружение и используйте данный подход. Преимущество в том, что не потребуется никакого стороннего софта, кроме разве что бесплатного блокнота Notepad++ (если нет его, вбиваем в поиск название и скачиваем).

Хочу подчеркнуть , что парсить через Api Вконтакте мы сможем только id пользователей любого человека из социальной сети вконтакте. Для сбора информации из групп этот способ не пройдет, необходимо использовать сторонний софт, но это уже тема отдельной статьи!

Парсинг id друзей

Сперва нам понадобится id номер пользователя социальной сети vk, чьих друзей мы собрались парсить. Либо через поиск ищем, или другим удобным для вас образом человека. Если пользователь переименовал свой адрес страницы например в http://vk.com/machommen , берет и нажимаем на аватар этого пользователя, затем скопируйте в браузерной строке значение после слова photo — это и будет id пользователя.

Рассмотрим пример : Пользователь, его адрес страницы — https://vk.com/me

Хорошо, номер выяснили. Теперь для того чтобы спарсить друзей этой милой девушки по адресу http://vk.com/id2050
Вставляем следующую команду, которая функцией Api vk выведет всех ее друзей.

Стоит оговориться об одном нюансе функции friends.get , которая за раз может вывести 5000 друзей того или иного пользователя. Это актуально, если у пользователя например около 8000 — 9000 тысяч друзей, тогда используем такую запись:

https://api.vk.com/method/friends.get?user_id=2050&offset=5000 Параметр offset - означает с какого значения начать делать выборку друзей, если например offset=5000, то друзья будут искаться после 5000 пользователя

На данный момент у этой барышни 393 друга , далее нам эта цифра понадобится чтобы сопоставить результат работы

Копируем полученные данные из окна браузера (список id), проще это сделать комбинацией клавиш CTRL + A — выделить все. Копируем и вставляем в блокнот Notepad++

1 {"response":[ ................содержимое.............. ]}

{"response":[ ................содержимое.............. ]}

Отлично, имеем список id пользователей. Помните я вначале говорил про базу таргетинга для контакта, так вот чтобы база правильно была обработа и принята в рекламный кабинет, есть правильно: id пользователя с начала каждой строки. Сейчас приведем в порядок наш список, так как нужно.

Находясь на нашем списке id пользователей в программе Notepad++ вызываем окно поиска сочетанием клавиш CTRL + F , вкладка «Заменить» , выставляйте значения так же как на скриншоте ниже и жмем «Заменить Все».

Получаем готовый список к работе в таргетке vk, сохраняйте себе на жесткий диск и пользуйтесь на здоровье. Убеждаемся, что сделали все правильно — конечное значение 393 , сравните с количеством друзей! — Все выполнено верно. Если в чем-то засомневались, пробегитесь по id номерам в браузере и убедитесь, что все номера принадлежат некой Кате Лебедевой.


Парсинг вконтакте помогает собрать готовые базы пользователей по которым Вам будет удобно таргетироваться. Удобство и преимущество, что вы подбираете целевую аудиторию вашего товара или услуги. Таким образом рекламные и промо материалы выстрелят лучше, соответственно Лиды, больший процент из посетителей сконвертится в лидов. Ооо, чудная конвертация))

Успехов в работе, с вами был

Довольно часто возникает необходимость указать id сообщества в вк. К примеру, когда мы , то в форме создания задания, нужно было указать ссылку (id) на нужную группу.

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

Итак, как узнать id группы вконтакте .

Что такое id группы

Если вы помните, я уже показывал вам, . С группой все тоже самое. Нам нужен ее уникальный номер.

Тут возможно два варианта. Если администратор группы не редактировал уникальный URL, то при посещении сообщества, в адресной строке браузера, мы увидим интересующее нас значение. А вот если ссылка была изменена, здесь будет несколько сложнее.

Если id группы не изменялось

Здесь все просто. Открываем нужное сообщество, и смотрим в адресную строку. Значение после «com/» , будет искомое id.

В нашем примере искомое значение будет:

Club120208137

Как узнать id группы в вк, если ссылка была изменена

Здесь в разделе «Адрес страницы» , пишет то, что нам нужно. Нажимаем «Сохранить»

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

Тут нужно прибегнуть к одной хитрости. На главной странице группы нажмите на ссылку «Участники» .

В открывшемся окне нажмите на значок «Поиск» .

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

Посмотрите в адресную строку, что вы там видите? URL сайта Вконтакте, затем слово search , что означает поиск. И слово group , означающее — в группе. Проще говоря — искать в группе.

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

Заключение

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

Вопросы?

Вконтакте

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

Парсер групп из поиска

Парсер позволяет собирать базы сообществ определённого типа (групп, публичных страниц, встреч) по списку указанных ключевых слов. Ключевые слова можно загрузить из файла. Количество сообществ, которые необходимо получить с одного ключевого слова, можно указать вручную (но не более 1000, это ограничение ВКонтакте). Для отсеивания ненужных групп предусмотрена такая опция, как стоп-слова, которая исключает из результатов поиска сообщества, в названиях которых встречается хотя бы одно из указанных стоп-слов.


Для создания баз, ориентированных под различные рассылки на стены групп/пабликов/встреч можно парсить только сообщества с открытыми стенами. Указывая метод сортировки перед началом парсинга, можно получать базы сообществ с определёнными параметрами и характеристиками. Если вы нацелены на крупные сообщества, вам поможет параметр, ограничивающий минимальное число участников в них.

Как и в случае с программой , в данном парсере можно ограничивать область поиска путём задания определённого региона в виде страны или города. Однако указывать их необходимо вручную с помощью идентификаторов. О том, как узнать ID города, можно прочитать в специальной статье « ». ID страны определяется таким же образом.

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

Парсер людей из поиска

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


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

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

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

Парсер людей из групп

Парсер, позволяющий получить список пользователей из любых открытых сообществ ВКонтакте. Достаточно лишь указать прямые ссылки на нужные сообщества и настроить остальные настройки как вам будет угодно. Ссылки на сообщества можно загружать из файла и указывать в любом виде. Например, вот так можно указать ссылку на сообщество Live:


По итогам сбора собранную базу можно предварительно отсортировать по возрастанию или убыванию ID пользователей. Если вы имеете права модератора в сообществах, с которых парсите пользователей, то вам будут доступны ещё 2 метода сортировки результатов: в хронологическом или антихронологическом порядке по вступлению в сообщество.

Для получения наиболее эффективных баз пользователей, которым в дальнейшем вы планируете осуществлять рассылки, присутствуют опции для сбора пользователей онлайн и с открытыми стенами и личными сообщениями.

Парсер информации о людях

Раздел, для сбора расширенной информации по списку пользователей ВКонтакте. Анализирует и выводит в виде таблицы следующие данные: имя, фамилия, пол, дата рождения, страна, город, мобильный телефон, прикреплённые аккаунты Instagram, Twitter, Facebook, текущий статус (онлайн/оффлайн), открытость стены и личных сообщений.


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

Собранную информацию, при необходимости можно сохранить в 2 типа файлов: в таблицу Excel формата.xls или в обычный текстовый файл. В последнем случае, все данные о пользователях будут разделены символом "точка с запятой".

Работа со строками

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

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

Для фанатов данной программы сразу отметим, что ранее её можно было найти на различных форумах и сайтах вроде нашего под названием «VKGroupsWorker».

На создание данной статьи я был вдохновлен публикацией «Получение участников сообщества vk.com за считанные секунды» . Моя статья написана новичком и отражает опыт решения одной задачи. Основная цель написания этой статьи для меня - собрать мнения, отзывы и критику примененного подхода от более опытных коллег. Кроме того, надеюсь, что кому-то приведенная здесь информация будет полезна.

Не так давно в одном из тестовых задания на вакансию младшего php-программиста мне попалась простая, но интересная для меня задача.

«Сделайте скрипт на php, который возвращает список id пользователей «ВКонтакте», разделенный символами перевода строки, которые являются мужчинами старше 25 лет и состоят в группе vk.com/habr ».

Доступ к информации из базы «ВКонтакте» осуществляется с использованием VK API. Начинать знакомство с VK API лучше с официальной документации . Для того чтобы вызвать метод API ВКонтакте, необходимо осуществить POST или GET запрос по протоколу HTTPS на URL следующего вида:

Получаем JSON-структуру с общим количеством членов сообщества vk.com/habr и тысячей первых id в списке по умолчанию отсортированном по возрастанию.

По условию задачи нам нужно вывести id пользователей определенного пола и возраста. Очевидный способ - выбирать запросами VK API пользователей группы вместе с их данными о поле и возрасте, а потом в PHP-коде анализировать их и выводить только нужные. Другой возможный способ - метод execute - позволяет в одном запросе передать скрипт на специальном языке VKScript для манипуляции с данными на сервере и вернуть уже обработанные данные. Сразу скажу, что мне не удалось, решить задачу с помощью метода execute. Может быть в комментариях кто-то укажет такое решение.

Пойдем по первому пути. Метод groups.getMembers с помощью значения sex параметра fields может выдавать пол пользователя, но он не выдает возраст. Вместо этого параметр fields имеет поле bdate - дата рождения. Кроме того, в запросах мы выбираем по тысяче пользователей, значит каждый следующий запрос должен выдать следующую тысячу. Для этого есть параметр offset, который показывает с какой позиции начинать выборку. Укажем в запросе еще и версию API.

В итоге запрос будет иметь примерно такой вид: https://api.vk.com/method/groups.getMembers?group_id=habr&offset=0&fields=sex,bdate&version=5.27

Чтобы забирать файл по ссылке, в PHP есть функция file_get_contents() . Она получает контент по ссылке и возвращает его в виде строки. Нужно учесть, что для того, чтобы file_get_contents() понимала протокол HTTPS нужна поддержка openssl в веб-сервере.

Потом полученный JSON-контент можно преобразовать в массив функцией json_decode() . Массив будет содержать и id, и пол. Дата рождения может быть вообще не указана.
Если дата рождения всё же указана, осталось из даты рождения получить возраст.

Даты рождения в bdate хранятся в строках формата ДД.ММ.ГГГГ, если указан год рождения, или ДД.ММ, если год рождения не указан. Чтобы узнать в каком формате строка фактически, я использовал первое, что пришло в голову: count(explode(".", $user_array["bdate"])) равно 2 или 3. Этот способ работает и не думаю, что это самое узкое место скрипта.

Для вычисления возраста по дате рождения нашел формулу hashcode.ru/questions/137939#137940 . Функция strtotime() понимает формат поля bdate.

Проверяем пол и возраст. Если они удовлетворяют условию, выводим id.

Весь код на PHP

// Номер пакета запроса $packet = 0; // Размер пакета запроса $limit = 1000; do { // Каждый запрос начинаем там, где остановились в предыдущем запросе. $offset = $ packet * $limit; // Выполнение запроса. // Результат - JSON-файл с общим количеством и данными пользователей. // Чтобы file_get_contents() работал с https на веб-сервере apache // должен быть активен модуль openssl. $contents = file_get_contents("https://api.vk.com/method/groups.getMembers?group_id=habr&offset=$offset&fields=sex,bdate&version=5.27") // Преобразуем JSON в массив $members = json_decode($contents, true); // Данные пользователей хранятся в подмассиве users. // Каждый элемент users - ассоциированный массив с данными. foreach ($members["response"]["users"] as $user_array) { // Если пользователь указал дату рождения и пользователь - мужчина... if ((isset($user_array["bdate"])) && ($user_array["sex"] == 2)) { // ... и если в дате рождения три компонента (ДД.ММ.ГГГГ)... if (count(explode(".", $user_array["bdate"])) == 3) { // то вычисляем возраст (формулу нашел в интернете) $age = floor((time()-strtotime($user_array["bdate"]))/(60*60*24*365.25)); // Если возраст нам подходит, выводим id пользователя с переводом строки if ($age >
"; } } } } // Переходим на следующий пакет. $packet++; } while ($members["response"]["count"] > $offset + $limit);


Этот вариант прекрасно работает на относительно небольших группах, но на группах более 100 тысяч подписчиков скрипт отрабатывает не до конца - в какой-то момент почему-то вываливается ошибка «file_get_contents(...): failed to open stream: Connection timed out in … on line ...». Пробовал увеличивать время выполнения скрипта и таймаут веб-сервера - не помогло. Так и не смог найти закономерность.

Тогда нашелся другой вариант - для загрузки ответа запроса использовать cURL . Чтобы применить такой метод, необходимо установить в ОС библиотеку libcurl, например, в Ubuntu - sudo apt-get install libcurl3 и включить в PHP поддержку cURL, например, в Ubuntu - sudo apt-get install php5-curl Теперь можно открыть в PHP-скрипте сеанс curl функцией curl_init() , установить параметры соединения (в том числе URL) функцией curl_setopt() и скачивать контент JSON-файлов в строку функцией curl_exec() . Потом следует закрыть сеанс - curl_close() . Остальной код остается без изменений:

Весь код с cURL на PHP

// Номер пакета запроса $packet = 0; // Размер пакета запроса $limit = 1000; // Инициализируем cURL. // Для работы с cURL должна быть установлена библиотека libcurl // и включена поддержка cURL в PHP. $ch = curl_init(); do { // Каждый запрос начинаем там, где остановились в предыдущем запросе. $offset = $ packet * $limit; // Параметры запроса curl_setopt($ch, CURLOPT_URL, "https://api.vk.com/method/groups.getMembers?group_id=habr&offset=$offset&fields=sex,bdate&version=5.27"); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); // Выполнение запроса. // Результат - JSON-файл с общим количеством и данными пользователей. $content = curl_exec ($ch); $members = json_decode($contents, true); // Данные пользователей хранятся в подмассиве users. // Каждый элемент users - ассоциированный массив с данными. foreach ($members["response"]["users"] as $user_array) { // Если пользователь указал дату рождения и пользователь - мужчина... if ((isset($user_array["bdate"])) && ($user_array["sex"] == 2)) { // ... и если в дате рождения три компонента (ДД.ММ.ГГГГ)... if (count(explode(".", $user_array["bdate"])) == 3) { // то вычисляем возраст (формулу нашел в интернете) $age = floor((time()-strtotime($user_array["bdate"]))/(60*60*24*365.25)); // Если возраст нам подходит, выводим id пользователя с переводом строки if ($age > 25) { echo $user_array["uid"] . "
"; } } } } // Переходим на следующий пакет. $packet++; } while ($members["response"]["count"] > $offset + $limit); // Закрываем cURL curl_close ($ch);


Как я уже говорил, думаю, возможен подход с методом execute, но мне пока не удалось получить в этом направлении удовлетворительный результат.

P. S. Прошу не думать, что я хочу получить от аудитории «Хабра» решение тестового задания. Вышеприведенные варианты я уже давно отправил и получил ответ. Просто немало времени потратил на эту задачу и хотел бы узнать, в правильном направлении ли я двигался и какие еще подходы можно было бы использовать.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows