Парсим социальную сеть для инвесторов Тинькофф пульс

Пример
В данный статье мы рассмотрим возможность парсинга социальной сети для инвесторов “Тинькофф Пульс”.
Для сбора данных необходима python библиотека tpulse, установим её.
pip install tpulse --upgrade
Блок кода с примером сбром данных, возьмем последние 9000 постов по тикеру $TCSG.
В одном запросе содержатся 30 постов, переменная N = 300, итого ~9000.
import pandas as pd import numpy as np import matplotlib.pyplot as plt from tpulse import TinkoffPulse from httpx import HTTPStatusError from time import sleep pulse = TinkoffPulse() N = 300 cursor = 999999999 raw_data = [] KEYS = [ "id", "nickname", "likesCount", "commentsCount", "inserted", ] for _ in range(N): try: response = pulse.get_posts_by_ticker("TCSG", cursor) cursor = response["nextCursor"] posts = response["items"] for post in posts: data = { key: post[key] for key in KEYS } raw_data.append(data) except HTTPStatusError: pass sleep(0.25)
Преобразуем список в pandas DataFrame, приведем дату публикации к формату YYYY-MM-DD и посчитаем количество постов на дату.
base_df = pd.DataFrame(raw_data) base_df['inserted'] = pd.to_datetime(base_df["inserted"].str[:10]) daily_counts = base_df.groupby('inserted').size().reset_index(name='count')
Далее построим обычный линейный график, который показывает количество постов на каждую дату из промежутка.
plt.figure(figsize=(15, 6)) plt.plot(daily_counts['inserted'], daily_counts['count'], marker='o', linestyle='-', color='r') plt.xlabel('Дата') plt.ylabel('Количество публикаций') plt.title('График количества публикаций по дням') plt.grid(True) plt.show()

Добавим на верхний график линию тренда зеленого цвета.
plt.figure(figsize=(15, 6)) plt.plot(daily_counts['inserted'], daily_counts['count'], marker='o', linestyle='-', color='r', label='Количество публикаций') plt.xlabel('Дата') plt.ylabel('Количество публикаций') plt.title('График количества публикаций по дням') plt.grid(True) x = np.arange(len(daily_counts)) y = daily_counts['count'] coefficients = np.polyfit(x, y, 1) trend_line = np.polyval(coefficients, x) plt.plot(daily_counts['inserted'], trend_line, linestyle='--', color='g', label='Линия тренда') plt.legend() plt.show()

Для разнообразия соберем чуть больше данных для тикера $FIVE, значение переменной N поменяем на 1000
, итого получили ~50000
постов.

Похожие публикации
Сбор данных из социальной сети Тинькофф Пульс (python, sqlite3)
Тинькофф инвестиции пульс api wrapper
Популярные авторы Тинькофф Инвестиций (Пульс) торгуют в убыток
Web-сервис мониторинга доходности авторов Тинькофф Пульс
Как изменилась доходность инвесторов после открытия биржи
На пиво
Если данный материал оказался вам полезен - готов принять ваши копеечки :)
в крипте:
ETH (ERC20): 0xcdc3231527a1ad105d527678ccbcf5e827747e7b
TON: UQAiIMLC2_j9tPlmQakdbz2Zh0rkTHH7tK2RTcO3rYAkr8QV
в рублях: https://pay.cloudtips.ru/p/2a3d8e06
Telegram
Большое спасибо всем за внимание! Если вам интересны подобные рассуждения - подписывайтесь на мой канал artydev & Co.