CoderCastrov logo
CoderCastrov
Реддит

Парсинг постов Reddit с использованием Python

Парсинг постов Reddit с использованием Python
просмотров
1 мин чтение
#Реддит

Установка модуля

pip3 install praw

Создание приложения Reddit

  • Для извлечения данных с Reddit нам необходимо создать приложение Reddit. Вы можете создать новое приложение Reddit (https://www.reddit.com/prefs/apps).

  • Нажмите на "are you a developer? create an app...".

  • Введите имя и описание по вашему выбору. В поле перенаправления URI введите http://localhost:8080

Разработанные приложения

Парсинг субреддитов Reddit

  • Извлеките некоторую информацию из субреддита redditdev с помощью следующего кода на Python.
import praw
import pandas as pdreddit_read_only = praw.Reddit(client_id="2wE9Oc0qLiU-cvmR2v0UnA",   # ваш идентификатор клиента
       client_secret="6s1KJiSgkJFeRl4TswtgFcTzQo-UyQ",  # ваш секретный ключ клиента
       user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36")  # ваш user agentsubreddit = reddit_read_only.subreddit("redditdev")# Отобразить имя субреддита
print("Имя субреддита:", subreddit.display_name)# Отобразить заголовок субреддита
print("Заголовок:", subreddit.title)# Отобразить описание субреддита
print("Описание:", subreddit.description)

Извлечение 5 популярных постов из подраздела Python на Reddit

subreddit = reddit_read_only.subreddit("Python")
 
for post in subreddit.hot(limit=5):
    print(post.title)
    print()

Сохранение лучших постов подраздела Python в pandas-таблицу

posts = subreddit.top("month")
# Парсинг лучших постов текущего месяца
posts_dict = {"Заголовок": [], "Текст поста": [],
   "ID": [], "Оценка": [],
   "Количество комментариев": [], "URL поста": []
   }
for post in posts:
 # Заголовок каждого поста
 posts_dict["Заголовок"].append(post.title)
 
 # Текст внутри поста
 posts_dict["Текст поста"].append(post.selftext)
 
 # Уникальный ID каждого поста
 posts_dict["ID"].append(post.id)
 
 # Оценка поста
 posts_dict["Оценка"].append(post.score)
 
 # Общее количество комментариев внутри поста
 posts_dict["Количество комментариев"].append(post.num_comments)
 
 # URL каждого поста
 posts_dict["URL поста"].append(post.url)# Сохранение данных в pandas-таблицу
top_posts = pd.DataFrame(posts_dict)
top_posts

Пример данных в форматах JSON и CSV

  • CSV
CSV
  • JSON
JSON