В этом посте мы будем использовать пакет python PRAW для очистки Reddit для получения медицинской информации. Требуются базовые знания синтаксиса Python.

Сначала установите PRAW:

pip install praw

Далее вам необходимо зарегистрировать приложение соответствующего типа здесь:

После перенаправления на страницу регистрации зарегистрируйтесь, создав имя пользователя и пароль.

Затем вы должны создать новое приложение:

После создания приложения вы должны получить свой client_id и секретный ключ.

Затем давайте импортируем необходимые пакеты:

import praw
import pandas as pd

Затем мы создаем аутентифицированный экземпляр Reddit:

r = praw.Reddit(client_id = 'AbCd1234!', 
                     client_secret = '4321dCbA!', 
                     username= 'username101',
                     password= 'password101!',
                     user_agent='someagentinfo ')

А теперь давайте попробуем вытащить несколько сообщений, связанных с медицинским страхованием:

while True:
    subreddit = r.subreddit('healthinsurance')
    for submission in subreddit.hot(limit=10):
        op_text = submission.selftext.lower()
        print(op_text)

Это выводит что-то вроде:

Мы также можем получать сообщения о страховании здоровья. Для Aetna у нас есть:

while True:
    subreddit = r.subreddit('aetna')
    for submission in subreddit.hot(limit=10):
        op_text = submission.selftext.lower()
        print(op_text)

Вы можете сделать то же самое для Medicare:

while True:
    subreddit = r.subreddit('medicare')
    for submission in subreddit.hot(limit=10):
        op_text = submission.selftext.lower()
        print(op_text)

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

def get_post(topic):
    title = []
    ups = []
    downs = []
    visited = []
    selftext = []
    time_list = []
    subreddit = r.subreddit(topic)
    for submission in subreddit.hot(limit = None):
        if not submission.stickied:
            title.append(submission.title)
            ups.append(submission.ups)
            downs.append(submission.downs)
            visited.append(submission.visited)
            selftext.append(submission.selftext)
            time_list.append(datetime.datetime.fromtimestamp(submission.created))
    
        
    df = pd.DataFrame({'Title': title, 'selftext': selftext, 'ups': ups, 'downs': downs, 
                       'visited': visited, 'time': time_list})
    return df

Если мы вызовем функцию с помощью «Aetna», мы получим:

df_aetna = get_post('aetna')
print(df_aetna.head())

И для «Медикэр»:

df_medicare = get_post('medicare')
print(df_medicare.head())

Вы можете записать эти фреймы данных в файлы csv следующим образом:

df_aetna.to_csv("aetna.csv")
df_medicare.to_csv("medicare.csv")

Спасибо за чтение. Код из этого поста доступен в GitHub.