Я работал с консультантом агента по миграции, чтобы изменить дизайн их сайта. Одной из проблем было извлечь все отзывы со страницы 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, вы можете использовать любой удобный инструмент очистки данных.

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

Сообщите мне, что вы застряли или у вас возникли проблемы с запуском скрипта.