перейти к содержанию

Полное руководство по парсингу публикаций в Facebook

Социальные сети содержат кладезь ценных общедоступных данных для тех, кто знает, как их добыть. Это подробное руководство, состоящее из более чем 4000 слов, научит вас, как эффективно парсить посты в Facebook, используя подходящие инструменты и методы.

Растущая важность парсинга веб-страниц

Веб-скрапинг — это автоматическое извлечение данных с веб-сайтов с помощью скриптов и программных инструментов. По данным Insider Intelligence, более 80% организаций сейчас используют веб-скрейпинг в той или иной форме для целей бизнес-аналитики.

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

По прогнозам Meticulous Research, индустрия парсинга веб-страниц будет расти более чем на 20% в среднем и достигнет $13.9 млрд к 2026 году. Очевидно, что парсинг веб-страниц становится необходимым для конкурентного бизнеса.

Многие веб-сайты запрещают парсинг веб-страниц в своих Условиях обслуживания (ToS). Facebook не является исключением. Это поднимает вопросы о законности парсинга веб-страниц.

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

Например, в постановлении HiQ Labs против LinkedIn от 2020 года Апелляционный суд 9-го округа подтвердил право HiQ очищать общедоступные страницы LinkedIn, заявив:

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

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

Тем не менее, этика также имеет значение. Вот несколько рекомендаций, которым следует следовать:

  • Собирать только общедоступные данные
  • Не нарушайте регулярное движение транспорта
  • Соблюдайте правила robots.txt
  • Используйте прокси и ограничивайте ставки
  • Источники кредита
  • Удалить данные, когда они больше не нужны

Позиция Facebook в отношении парсинга веб-страниц

В Условиях обслуживания Facebook говорится:

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

Это означает, что они препятствуют очистке. Однако их основные опасения, похоже, заключаются в следующем:

  • Парсинг личных данных пользователя
  • Поддельные аккаунты/боты, злоупотребляющие платформой
  • Нарушение инфраструктуры Facebook

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

Facebook оставляет это открытым, требуя «предварительного разрешения» для парсинга ботов. Но разрешение сегодня активно не выдается каким-либо прозрачным и практическим способом.

Лучший подход — проводить парсинг этично и ответственно в соответствии с лучшими практиками, изложенными ранее. Если вы придерживаетесь общедоступных страниц и данных, парсинг скромных объемов не должен вызывать беспокойства. Но невозможно дать точные гарантии, если политика платформы расплывчата.

Теперь давайте посмотрим, как на самом деле парсить посты в Facebook…

Парсинг Facebook с помощью безголовых браузеров

Самый простой подход — напрямую управлять браузером с помощью скриптов. Современные библиотеки безголовых браузеров, такие как Puppeteer и Playwright, предоставляют API-доступ к функциям браузера.

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

Сначала нам нужно установить Puppeteer:

npm install puppeteer  

Тогда мы можем написать такой скрипт:

// puppeteer-scraper.js

const puppeteer = require(‘puppeteer‘);

(async () => {

  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto(‘https://www.facebook.com/nasa/‘);

  // Wait for posts to load
  await page.waitForSelector(‘.userContentWrapper‘); 

  // Extract post data
  const posts = await page.$$eval(‘.userContentWrapper .permalinkPost‘, posts => {

    return posts.map(post => {

      return {

        text: post.querySelector(‘.userContent‘)?.textContent ?? ‘‘,  
        date: post.querySelector(‘.timestampContent‘)?.textContent ?? ‘‘,
        reactions: post.querySelector(‘.likeCount‘)?.textContent ?? ‘‘,
        comments: post.querySelector(‘.commentCount‘)?.textContent ?? ‘‘,
        shares: post.querySelector(‘.shareCount‘)?.textContent ?? ‘‘

      };

    });

  });

  console.log(posts);

  await browser.close();

})();

Вот что происходит:

  1. Запустите безголовый браузер Chrome с помощью Puppeteer.

  2. Откройте страницу НАСА в Facebook.

  3. Подождите, пока загрузятся первые сообщения.

  4. Используйте page.$$eval оценить все элементы, соответствующие .userContentWrapper .permalinkPost селектор.

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

  6. Распечатайте извлеченный массив сообщений.

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

Теперь мы можем легко сохранять очищенные сообщения в формате JSON:

const fs = require(‘fs‘);

// ...scrape posts

fs.writeFileSync(‘nasa-posts.json‘, JSON.stringify(posts, null, 2)); 

Или мы могли бы добавить каждое сообщение в виде строки в файл CSV. Возможности безграничны!

Сравнение кукольника и драматурга

Кукольник - это здорово, но Драматург — еще один отличный вариант безголового браузера с некоторыми уникальными преимуществами:

  • Помимо Chromium, поддерживает Firefox и WebKit.
  • Немного быстрее загружается страница.
  • Улучшенная встроенная поддержка нумерации страниц, iframe и всплывающих окон.
  • Пользовательский интерфейс для предварительного просмотра очищенных данных.
    - Более плавный синтаксис async/await.

Например, вот тот же сценарий в «Драматурге»:

const { chromium } = require(‘playwright‘); 

(async () => {

  const browser = await chromium.launch();

  const context = await browser.newContext();

  const page = await context.newPage();

  await page.goto(‘https://www.facebook.com/nasa/‘);

  const posts = await page.$$eval(‘.userContentWrapper .permalinkPost‘, posts => {

    // Map elements to data  

  });

  await browser.close();

})();

Использование драматургов в основном идентично. Обе библиотеки — отличный выбор в зависимости от ваших предпочтений.

Теперь давайте посмотрим на использование прокси для более эффективного парсинга…

Парсинг через прокси

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

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

Вот как настроить Puppeteer для использования резидентных прокси:

const puppeteer = require(‘puppeteer-extra‘);
const pluginStealth = require(‘puppeteer-extra-plugin-stealth‘);

// Enable stealth plugin  
puppeteer.use(pluginStealth());

(async () => {

  const browser = await puppeteer.launch({
    headless: true, 
    args: [
      ‘--proxy-server=http://USER:PASS@PROXY:PORT‘ 
    ]
  });

// ...rest of script

})();

Мы просто проходим мимо --proxy-server спор с учетными данными нашего прокси-провайдера. Это маршрутизирует весь трафик через IP-адрес прокси.

Ассоциация puppeteer-extra-plugin-stealth модуль применяет различные методы для уклонения от обнаружения ботов при прохождении через прокси.

Лучшие резидентные прокси-сервисы включают в себя:

  • Smartproxy — планы от 75 долларов в месяц за 40 ГБ трафика. API доступен.

  • GeoSurf – планы от 50 долларов в месяц. Легко интегрируется с Puppeteer.

  • Luminati — планы начинаются от 500 долларов в месяц. Большой пул IP.

  • Oxylabs – планы от 100 евро в месяц. Предлагается API.

Стоимость резидентных прокси начинается от 3–5 центов за ГБ, что намного дороже, чем прокси для центров обработки данных, но оно того стоит для серьезного парсинга.

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

Парсинг Facebook с помощью реальных браузеров

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

Парсинг из реального браузера альтернатива — на вашем компьютере. Это снижает сложность работы с небольшими скребками.

Такие инструменты, как Осьминога, ParseHub и Импорт.ио предлагайте расширения для браузера для очистки контента, когда вы естественным образом просматриваете Facebook.

Например, вот шаги для очистки с помощью Octoparse:

  1. Установите расширение для браузера.

  2. Перейдите на целевую страницу.

  3. Щелкните значок расширения.

  4. Выберите элементы для очистки.

  5. Извлечь данные.

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

Парсинг Facebook с помощью инструментов и API

Помимо скриптов, существует множество инструментов, специально созданных для парсинга Facebook:

API парсера такое как Декси.ио, ScrapeHero и СерпАпи выполнять очистку за вас, чтобы вы могли сосредоточиться на использовании данных. Например:

import dexi 

data = dexi.FacebookPage(
  page_urls=[‘https://www.facebook.com/nasa‘]
).get_posts()

print(data)

Дополнения для Google Таблиц такое как ИмпортироватьFacebook и Социальный Подшипник позволяют переносить данные Facebook непосредственно в Google Таблицы для мгновенного анализа.

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

Расширения для браузера своими руками такое как Скребок Facebook сделать парсинг доступным без кодирования.

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

Какие данные вы действительно можете получить из Facebook?

Хотя мы сосредоточились на публикациях, многие типы данных на самом деле можно извлечь из Facebook:

  • Метаданные страницы – Имя, категория, количество подписчиков и т. д.

  • Блог – Текстовое содержание, дата, реакции, комментарии.

  • Комментарии – Текст комментария, имя комментатора, дата, реакции.

  • Отзывы – Текст обзора, изображения, рейтинги, имя рецензента.

  • Мероприятия – Название, описание, местоположение, расписание, информация об участниках.

  • Группы - Информация о группе, список участников, сообщения, комментарии.

  • Объявления на торговой площадке — Название, описание, цена, изображения, продавец.

  • объявления – Рекламный креатив, текст, изображения, критерии таргетинга.

Однако сосредоточьтесь только на том, что вам действительно нужно. Никогда не собирайте личные данные пользователей — только публичные страницы и публикации.

Парсинг Facebook ответственно

Facebook предоставляет множество общедоступных данных. Но собирать урожай нужно ответственно:

  • Уважайте robots.txt: Файл robots.txt Facebook позволяет очищать страницы и сообщения. Но подчиняйтесь любым заблокированным путям.

  • Ограничить частоту запросов: Не бомбардируйте страницы сотнями запросов в секунду. Будь благоразумен.

  • Используйте прокси: Ротация IP-адресов для распределения нагрузки. Резидентные прокси работают лучше всего.

  • Собирать только общедоступные данные: Никогда не ориентируйтесь на личные профили или личную информацию.

  • Источники кредита: При повторной публикации скопированного контента укажите соответствующую ссылку.

  • Удалить ненужные данные: удалить очищенные данные, которые больше не нужны.

  • Следуйте этике: Собирайте только те данные, в использовании или анализе которых у вас есть законный интерес.

Парсинг никогда не должен нарушать инфраструктуру Facebook или ставить под угрозу конфиденциальность пользователей. Мы просто извлекаем что такое варган? данные, которые Facebook уже раскрыл.

Парсинг Facebook: ключевые выводы

  • Веб-скрапинг может извлечь ценные общедоступные данные из Facebook для использования в бизнесе.
  • Сосредоточьтесь на очистке общедоступных страниц и публикаций, а не личных профилей.
  • Соблюдайте передовые методы ответственного парсинга.
  • Используйте такие инструменты, как Puppeteer, Playwright, API-интерфейсы парсеров и многое другое.
  • Меняйте резидентные прокси, чтобы избежать обнаружения.
  • Собирайте только те данные, которые вы можете законно использовать.
  • Удалите очищенные данные, когда они больше не нужны.

На этом я завершаю свое руководство из более чем 4000 слов по эффективному и этичному парсингу постов в Facebook. Я надеюсь, что вы сочли полезным! Пожалуйста, свяжитесь с нами, если у вас есть другие вопросы.

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *