Недавно введенные ограничения, касающиеся API Facebook, существенно усложнили процесс визуализации социальных связей. Данная статья представляет собой полное руководство, описывающее сбор данных, их хранение и визуализацию в виде сетевого графа.
Facebook владеет информацией о структуре социальной сети, объединяющей более миллиарда человек. Те не менее, если вы являетесь пользователем Facebook, вам доступны очень ограниченные средства для анализа своих социальных связей. Давайте рассмотрим, как с помощью нескольких инструментов для сбора данных, графовой базы данных Neo4j и приложения Linkurious можно визуализировать свою социальную сеть в Facebook.
Эта задача не имеет простого решения. Facebook ограничила доступ к своему API. По этой причине недавно была приостановлена поддержка приложения Netvizz, позволявшего пользователям визуализировать свои социальные связи. Теперь визуализация стала сложной задачей.
Эрве Пикок (Hervé Piedcoq), аналитик и эксперт в области OSINT (open-source intelligence, разведка на основе открытых источников), расскажет вам, как 1) собирать, 2) хранить и 3) визуализировать данные о ваших социальных связях в Facebook.
Сбор данных о своих социальных связях в Facebook
ШАГ 1. Загружаем список друзей
Для сбора данных мы будем использовать мощное, но простое в использовании приложение OutWit Hub, основанное на Mozilla и XUL. Это приложение обладает широкой функциональностью, которая включает в себя обнаружение таблиц и списков, инструмент для извлечения данных из исходного кода веб-страниц, макросы и др.
Конечно, мы могли бы использовать Python или другой язык программирования, но OutWit Hub ориентирован на пользователей, не являющихся программистами, и сразу же готов к использованию.
Открываем свою страницу Facebook в OutWit Hub и отображаем полный список друзей.
OutWit Hub извлекает данные из исходного кода веб-страницы. Проблема заключается в том, что Facebook использует большое количество кода JavaScript, который «загрязняет» код веб-страницы и затрудняет его анализ.
Чтобы решить эту проблему, необходимо сохранить веб-страницу в формате HTML на жестком диске, а затем открыть ее в OutWit Hub, как статическую веб-страницу.
На левой панели, нажимаем «links» («liens» по-французски), чтобы извлечь все ссылки, присутствующие в коде веб-страницы.
Отфильтруем ссылки с помощью регулярного выражения, обведенного рамкой в левом нижнем углу. Экспортируем отобранные ссылки в CSV-файл. Заменим значения в столбце «Url Source» на URL-адрес своего профиля. Переименуем столбец «Url Source» в «Source», а столбец «Url Page» в «Target».
Если импортировать этот файл в какой-либо визуализатор графов, получим примерно следующее:
Мы получили красивый граф, визуализирующий список друзей. Но он, на самом деле, не представляет особого интереса с точки зрения анализа социальных сетей, потому что в нем отсутствуют связи между друзьями.
ШАГ 2. Выполним необходимые преобразования и экспортируем список друзей в формат HTML
Мы будем использовать приложение OpenRefine для обработки URL-адресов. Наши данные выглядят следующим образом:
Source | Target |
---|---|
https://www.facebook.com/My_profile | https://www.facebook.com/John.doe |
https://www.facebook.com/My_profile | https://www.facebook.com/profile.php?id=012345678910 |
Обратите внимание, Facebook использует два типа URL-адресов:
- старый тип, содержащий profile.php;
- новый тип, содержащий только ник.
Это означает, что мы должны обрабатывать каждый из этих двух типов отдельно.
Столбцы «Source» и «Target» не изменятся, но мы создадим на их основе третий столбец, содержащий специальный URL-адрес, который позволяет получить список общих друзей для вас и данного вашего друга.
Чтобы сделать это, просто используем функцию конкатенации. В результате получим следующее:
Source | Target | URL |
---|---|---|
https://www.facebook/com/ My_profile |
https://www.facebook/com/ John.doe |
https://www.facebook.com/My_profile/ friends?and=John.doe |
https://www.facebook/ com/My_profile |
https://www.facebook/ com/profile.php?id=012345678910 |
https://www.facebook.com/ My_profile/friends? and=012345678910 |
Теперь необходимо преобразовать URL-адреса в столбце «URL» в HTML-ссылки, чтобы их было удобно обрабатывать с помощью OutWit Hub:
Source | Target | URL |
---|---|---|
https://www.facebook/ com/My_profile |
https://www.facebook/ com/John.doe |
https://www.facebook.com/Your-profile-ID/friends?and=John.doe |
https://www.facebook/com/ My_profile |
https://www.facebook/com/ profile.php?id=012345678910 |
https://www.facebook.com/Your-profile-ID/friends?and=012345678910 |
Это позволит OutWit Hub извлечь список общих друзей, посетив HTML-ссылки.
Теперь экспортируем проект в формат HTML.
ШАГ 3. Извлекаем данные!
Открываем HTML-файл в OutWit Hub. Обратите внимание, OutWit Hub рассматривает содержимое столбца «URL», как ссылки.
Создадим макрос, который обработает все ссылки. По сути, это те же операции, что и в 1-м шаге, но автоматизированные.
В зависимости от количества ваших друзей и машины, на которой вы работаете, этот процесс может длиться несколько часов.
Когда процесс завершится, мы получим CSV-файл с набором данных. Теперь можно добавить в этот файл исходный список друзей (1-й шаг) и удалить дублирующиеся записи с помощью OpenRefine.
Как видите, извлечь хороший набор данных с Facebook не так уж просто. Но это вполне реально сделать с помощью соответствующих методов сбора и обработки данных.
Импортируем данные в базу данных Neo4j
Трудно анализировать социальные связи с помощью таких инструментов, как Excel. Для хранения данных мы будем использовать базу данных Neo4j.
Ниже показано, как импортировать CSV-данные в базу данных Neo4j:
//———————–////———————–CONSTRAINTONaidCOMMIT2000
FROM“file:c:/my-facebook-network.csv“ASline‘,‘lineWHEREline=“common-friends.csv“lineCOMMIT2000FROM“file:c:/my-facebook-network.csv“ASline‘,‘lineWHEREline=“friends.csv“
line//———————–////———————–COMMIT2000
FROM“file:c:/my-facebook-network.csv“ASline‘,‘lineline——>
Код из файла facebook.cql вы можете увидеть на GitHub в виде простого текста или с подсветкой синтаксиса.
Вы можете загрузить набор данных Neo4j, используемый в этой статье, здесь. Теперь мы можем визуализировать нашу социальную сеть.
Визуализируем граф социальных связей
Neo4j имеет встроенный инструмент для визуализации. Он позволяет визуализировать графовые запросы, выполняемые с помощью Cypher (языка графовых запросов):
Если для исследования социальной сети нам необходим более простой и более мощный инструмент, мы можем использовать приложение Linkurious.
Просто вводим имя любого друга, и мы визуализируем его.
Мы также можем детализировать интересующие нас участки.
Мы можем отбирать и скрывать узлы на основании их свойств. Также мы можем анализировать пути между данными двумя людьми. И все это с помощью простого в использовании интерфейса.
Визуализация графов позволяет понять структуру социальной сети. Мы можем увидеть, кто кого знает, у кого много друзей, у кого мало, какие сообщества присутствуют в нашей сети. Всю эту информацию можно получить посредством визуального анализа.
По материалам: LinkedIn Pulse
1 комментарий
[…] URL: https://datareview.info/article/facebook-vizualizatsiya-sotsialnyih-svyazey/; https://compress.ru/article.aspx?id=16593 (дата обращения: 24.07.2019) […]