Как извлечь данные из интерактивной диаграммы с помощью Python? (Селен + BeautifulSoup)

Мне нужно извлечь данные из диаграммы развития активов, представленной по этой ссылке (пример): https://investidor10.com.br/carteira/572422/ (изображение диаграммы прилагается).

Мне нужны данные для всех столбцов, присутствующих на диаграмме: стоимость активов, прирост капитала и сумма инвестиций. Я пытался извлечь данные с помощью Selenium + BeautifulSoup, но не смог, потому что данные отсутствуют в HTML и появляются только при нажатии на полосу диаграммы. Я искал в Интернете, но не нашел ничего, что помогло бы мне решить эту проблему.

Таким образом, кто-нибудь знает, как я могу извлечь данные, которые появляются на диаграмме развития активов?

Не обязательно использовать Selenium + BeautifulSoup, но он должен быть на Python.

Диаграмма, из которой я хочу извлечь данные: Как извлечь данные из интерактивной диаграммы с помощью Python? (Селен + BeautifulSoup)

Я пробовал использовать Selenium + BeautifulSoup, но не знаю, как извлечь данные, поскольку они динамические и появляются, когда вы выбираете полосу на графике.

Кроме того, просмотрите тур , прочтите Как задавать - Для будущих вопросов укажите написанный вами код и застрял как минимальный воспроизводимый пример, чтобы каждый мог воспроизвести вашу проблему и работать над ней. Спасибо

HedgeHog 07.05.2024 11:44
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Нет необходимости использовать selenium или beautifulsoup, на мой взгляд, самый простой/прямой способ — использовать API, через который извлекаются данные.

Как узнать, загружается/отрисовывается ли контент в этом случае динамически?

Первый индикатор: откройте веб-сайт как человек в браузере и обратите внимание, что для этой области появляется анимация загрузки / задержка. Второй показатель: контент не включен в статический ответ на запрос. Теперь вы можете использовать инструменты разработчика браузера, чтобы просмотреть вкладку «Запросы XHR» и узнать, какие данные из каких ресурсов загружаются. -> http://developer.chrome.com/docs/devtools/network

Если есть API, используйте его, иначе используйте selenium.

Пример
import requests

requests.get(
    'https://investidor10.com.br/api/carteiras/charts/evolucao-patrimonio/572422/12/all',
    headers = {'user-agent':'some_valid_agent'}
).json()
Результат
[{"month":"05/23","date":"05/23","sum_applied":3599.2496,"sum_equity":3794.7088999999996,"sum_flow":5198.9427,"profitability":0},{"month":"06/23","date":"06/23","sum_applied":4199.3396,"sum_equity":4621.3407,"sum_flow":6038.5586,"profitability":12.73},{"month":"07/23","date":"07/23","sum_applied":5163.1996,"sum_equity":5585.579299999999,"sum_flow":7031.7742,"profitability":10.32},{"month":"08/23","date":"08/23","sum_applied":7282.6224,"sum_equity":7601.287600000001,"sum_flow":9065.3382,"profitability":5.83},{"month":"09/23","date":"09/23","sum_applied":8304.412400000001,"sum_equity":8625.8636,"sum_flow":10053.2882,"profitability":5.14},{"month":"10/23","date":"10/23","sum_applied":8845.77940001,"sum_equity":8980.3758,"sum_flow":10872.9838,"profitability":2.68},{"month":"11/23","date":"11/23","sum_applied":10658.68980001,"sum_equity":11171.1518,"sum_flow":13193.6327,"profitability":5.8},{"month":"12/23","date":"12/23","sum_applied":12046.64240001,"sum_equity":13070.843799999999,"sum_flow":15134.4752,"profitability":9.41},{"month":"01/24","date":"01/24","sum_applied":13077.23640001,"sum_equity":13844.4296,"sum_flow":15645.7756,"profitability":6.68},{"month":"02/24","date":"02/24","sum_applied":14686.01640001,"sum_equity":15452.7688,"sum_flow":17294.9096,"profitability":5.94},{"month":"03/24","date":"03/24","sum_applied":16045.49640001,"sum_equity":16943.5274,"sum_flow":18794.0035,"profitability":6.26},{"month":"04/24","date":"04/24","sum_applied":17719.15640001,"sum_equity":17760.8627,"sum_flow":20053.741,"profitability":0.8},{"month":"05/24","date":"05/24","sum_applied":21831.56640001,"sum_equity":22332.2705,"sum_flow":24650.6796,"profitability":2.76}]

Вау, это именно то, что мне нужно. Я пытался найти эту конечную точку, но не смог найти ее, проверив данные веб-сайта. Можете ли вы рассказать мне, как вы пришли к этой конечной точке «investidor10.com.br/api/carteiras/charts/evolucao-patrimoni‌​o/… »?

Thiago Silva 07.05.2024 18:48

Другие вопросы по теме