На информационном ресурсе применяются рекомендательные технологии (информационные технологии предоставления информации на основе сбора, систематизации и анализа сведений, относящихся к предпочтениям пользователей сети "Интернет", находящихся на территории Российской Федерации)

artydev & Co

1 подписчик

Парсим Тинькофф пульс

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

img

Пример

В данный статье мы рассмотрим возможность парсинга социальной сети для инвесторов “Тинькофф Пульс”.

Для сбора данных необходима 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() 
img

Добавим на верхний график линию тренда зеленого цвета.

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() 
img

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

img

Похожие публикации

Сбор данных из социальной сети Тинькофф Пульс (python, sqlite3)
Тинькофф инвестиции пульс api wrapper
Популярные авторы Тинькофф Инвестиций (Пульс) торгуют в убыток
Web-сервис мониторинга доходности авторов Тинькофф Пульс
Как изменилась доходность инвесторов после открытия биржи

На пиво

Если данный материал оказался вам полезен - готов принять ваши копеечки :)

в крипте:
ETH (ERC20): 0xcdc3231527a1ad105d527678ccbcf5e827747e7b
TON: UQAiIMLC2_j9tPlmQakdbz2Zh0rkTHH7tK2RTcO3rYAkr8QV

в рублях: https://pay.cloudtips.ru/p/2a3d8e06

Telegram

Большое спасибо всем за внимание! Если вам интересны подобные рассуждения - подписывайтесь на мой канал  artydev & Co.

Ссылка на первоисточник
наверх