Я работал с консультантом агента по миграции, чтобы изменить дизайн их сайта. Одной из проблем было извлечь все отзывы со страницы Facebook и легко импортировать их на сайт. Первое, что пришло мне в голову так же, как и вам, что вытащить данные из Facebook через Graph API довольно просто, что тоже не является ложью. Вы можете легко получить комментарии рецензента и временные метки. Но проблема связана с политикой конфиденциальности, пока вы не установите и не получите разрешение пользователя, Graph API не вернет имя рецензента и изображение профиля.
Наша идея заключалась в том, чтобы извлечь все отзывы со страницы Facebook, включая имя рецензента и изображение профиля. Я просмотрел Google и не смог найти подходящего решения. Затем я придумал простое и HACKY решение, которое сработало для меня.
Вам понадобятся базовые знания JavaScript и DOM браузера. Вы должны иметь базовые знания о том, как использовать инструмент разработчика браузера. Используя JavaScript и селектор DOM, вы должны иметь возможность извлекать любые обзоры страницы Facebook, включая имя рецензента и изображение на момент написания этой статьи.
Если классы или селектор сломаются в будущем, я уверен, вы разберетесь с этим.
Я из Австралии и собираюсь использовать это https://www.facebook.com/Banjos-Bakery-Cafe-2116303718644945/reviews/ в качестве примера.
Мы собираемся собрать четыре данных — имя рецензента, дату рецензирования, изображение профиля рецензента и комментарий к обзору.
Я использую браузер Chrome и его инструмент разработчика.
Во-первых, нам нужно найти целевой элемент для блока обзора, как на изображении.
Класс для всех блоков комментариев определен в
du4w35lb k4urcfbm l9j0dhe7 sjgh65i0
Как только мы определили этот класс, мы пройдемся по этому классу и извлечем информацию о каждом обзоре.
Аналогичным образом проверьте имя, изображение времени и комментарий.
Следующий класс содержит элемент изображения.
oi9244e8 do00u71z j83agx80
Пример извлечения изображения будет примерно таким.
const imgEL = comment.querySelector('.oi9244e8.do00u71z.j83agx80'); const userImage = imgEL .querySelector('image') .getAttribute('xlink:href'); console.log(userImage.toString())
Ниже приведен пример извлечения изображения в инструменте разработчика браузера.
Теперь вы сможете использовать тот же подход для извлечения имени, времени и комментариев.
Я добавил полный код, который работал на момент написания. Вы также можете скопировать код с моего Github.
Вы можете увидеть действие здесь. Это довольно легко, не так ли?
Как только все комментарии появятся в консоли, вы можете преобразовать JSON в CSV или изменить в нужном формате.
Чтобы преобразовать JSON в CSV, вам нужно JSON.stringify(комментарии) и скопировать в буфер обмена. Я использую https://csvjson.com/json2csv. Если это выдает ошибку, это похоже на экранирующий символ. Я пробовал https://www.freeformatter.com/json-escape.html. Затем скопируйте неэкранированный вывод и повторите попытку на https://csvjson.com/json2csv. Теперь это должно работать.
Заключительные мысли
Если вы думаете об автоматизации или создании собственного API, вы можете использовать любой удобный инструмент очистки данных.
Если скрипт у вас не работает, возможно, проблема связана с правильным селектором.
Сообщите мне, что вы застряли или у вас возникли проблемы с запуском скрипта.