Парсинг комментариев на Facebook с использованием Python
Table Of Content
- Настройка среды
- Импорт необходимых библиотек
- Настройка CookieJar
- Создаем объект CookieJar
- Экспортированные cookie из расширения "EditThisCookie"
- Преобразуем cookie в объект CookieJar
- Парсинг комментариев на Facebook
- Определите идентификатор поста
- Определите максимальное количество комментариев для загрузки
- Получите пост (это дает генератор)
- Получите первый элемент генератора, который является запрошенным постом
- Извлеките комментарии из поста
- Сохранение комментариев
- Перебираем комментарии и добавляем их в DataFrame
- Сохраняем полученный DataFrame в виде CSV-файла
Facebook является одной из крупнейших социальных платформ с огромным количеством контента, создаваемого пользователями. Извлечение информации с Facebook, такой как комментарии к определенному посту, может предоставить ценные инсайты для различных целей. В этой статье мы рассмотрим, как парсить комментарии на Facebook с использованием Python.
Настройка среды
Для начала нам нужно установить необходимые библиотеки. Мы будем использовать библиотеку facebook_scraper
, которая предоставляет удобный интерфейс для парсинга данных с Facebook. Кроме того, нам понадобится библиотека requests
для обработки HTTP-запросов и pandas
для манипулирования данными.
Вы можете установить эти библиотеки, запустив следующую команду:
pip install facebook_scraper requests pandas
Импорт необходимых библиотек
Давайте импортируем необходимые библиотеки и настроим наше окружение:
import facebook_scraper as fs
import requests
from http.cookiejar import CookieJar
import pandas as pd
Настройка CookieJar
Для парсинга Facebook требуется аутентификация, и для аутентификации наших запросов нам необходимо предоставить необходимую информацию о сеансе в виде cookie. В этом руководстве мы будем использовать расширение браузера "EditThisCookie", популярное расширение браузера, чтобы экспортировать необходимые cookie из действующей сессии Facebook. Экспортируя cookie, мы можем создать объект CookieJar
в Python и заполнить его необходимыми cookie для аутентификации. Это позволяет нам получать доступ и парсить данные Facebook без проблем.
# Создаем объект CookieJar
cookie_jar = CookieJar()
# Экспортированные cookie из расширения "EditThisCookie"
cookies = [
# Вставьте сюда экспортированные cookie
]
# Преобразуем cookie в объект CookieJar
for cookie in cookies:
c = requests.cookies.create_cookie(
domain=cookie["domain"],
name=cookie["name"],
value=cookie["value"],
path=cookie["path"],
secure=cookie["secure"],
expires=cookie.get("expirationDate"),
rest={
"HttpOnly": cookie["httpOnly"],
"SameSite": cookie["sameSite"],
},
)
cookie_jar.set_cookie(c)
Парсинг комментариев на Facebook
Теперь, когда мы настроили среду и аутентификацию, давайте перейдем к парсингу комментариев. Мы укажем идентификатор поста, для которого мы хотим получить комментарии, и установим максимальное количество комментариев для загрузки.
# Определите идентификатор поста
POST_ID = 779363630349936
# Определите максимальное количество комментариев для загрузки
MAX_COMMENTS = 100
# Получите пост (это дает генератор)
gen = fs.get_posts(
post_urls=[POST_ID],
options={"comments": MAX_COMMENTS, "progress": True},
cookies=cookie_jar
)
# Получите первый элемент генератора, который является запрошенным постом
post = next(gen)
# Извлеките комментарии из поста
comments = post['comments_full']
В приведенном выше коде мы используем функцию get_posts
из библиотеки facebook_scraper
для получения нужного поста. Мы передаем идентификатор поста и указываем количество комментариев для загрузки, используя параметр options
.
Сохранение комментариев
Для сохранения комментариев мы будем использовать pandas DataFrame. Давайте создадим пустой DataFrame с нужными названиями столбцов, а затем переберем комментарии, добавляя каждый комментарий в DataFrame. Вот код:
# Перебираем комментарии и добавляем их в DataFrame
for comment in comments:
# Извлекаем информацию о комментарии
comment_id = comment['comment_id']
comment_text = comment['comment_text']
# Создаем новую строку с информацией о комментарии
new_row = {'comment_id': comment_id, 'comment_text': comment_text}
# Добавляем новую строку в DataFrame
commentdf = commentdf.append(new_row, ignore_index=True)
# Сохраняем полученный DataFrame в виде CSV-файла
commentdf.to_csv("t1_facebook_comment.csv", index=False)
В приведенном выше коде мы перебираем каждый комментарий в списке comments
, полученном из поста. Мы извлекаем идентификатор комментария и текст комментария, а затем создаем новую строку с этой информацией. Затем мы добавляем новую строку в DataFrame commentdf
с помощью метода append
.
Наконец, мы сохраняем полученный DataFrame в виде CSV-файла с именем "t1_facebook_comment.csv" с помощью метода to_csv
. Аргумент index=False
гарантирует, что индекс строки не будет включен в CSV-файл.
Выполнив этот код, вы получите CSV-файл, содержащий идентификатор комментария и текст для дальнейшего анализа или сохранения.
Не стесняйтесь изменять код в соответствии с вашими требованиями, например, добавлять дополнительные шаги обработки или анализа данных.