Парсим Тинькофф пульс
Пример
В данный статье мы рассмотрим возможность парсинга социальной сети для инвесторов “Тинькофф Пульс”.
Для сбора данных необходима 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.