8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54

Парсинг сайтов с динамическими данными

29.08.2022, 12:35. Показов 2258. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет

Два дня мучаюсь над одной проблемой, не могу решить и все, перерыл кучу информации, результат около нуля

Задача: Нужно содрать данные с одного сайт, данные эти обновляются каждую секунду
например
https://www.boerse-frankfurt.de/index/dax
котировка индекса DAX в середине страницы справа от графика

текст страницы получаю через requests.get(url)

беда в том что обновляемые данные не попадают, похоже не успевают запустить скрипты


как получить эти данные, дайте пару советов
через браузер они скачиваются нормально, сейчас изучаю селениум, я так понял что она мне может помочь, но каждый раз будет открываться браузер, это очень долго и затратно.
я новичок, только познаю питон, поэтому сильно не ругайте
Спасибо всем кто откликнулся.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.08.2022, 12:35
Ответы с готовыми решениями:

Парсинг страниц с динамическими данными
Добрый день, форумчане. Возникла необходимость получения некоторых данных со стороннего сайта для анализа и последующей обработки....

Автоматическое заполнение ячеек данными, взятыми из одной ячейки с динамическими данными
Добрый день! Подскажите, есть ли решение моей задачи: В одной и той же ячейке постоянно (ежесекундно) меняется число (данные...

Шаблон с динамическими данными из MSSQL
Всем привет, Не уверен, что пишу в правилном разделе, за что прошу силно не "пинать" :). Вопрос состоит в следующем:...

12
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54
29.08.2022, 19:52  [ТС]
В общем решил что буду пробовать через selenium и PhantomJS
но столкнулся с проблемой

код вот такой

from selenium import webdriver написал самой первой строчкой в коде

driver = webdriver.PhantomJS()

Ошибка вот такая
driver = webdriver.PhantomJS()
AttributeError: module 'selenium.webdriver' has no attribute 'PhantomJS'
в списке есть хромы, ие и прочие, phantomjs нету

selenium и PhantomJS устанавливал
pip install selenium
pip install phantomjs


что я не доустановил? хелп плиз
0
148 / 111 / 37
Регистрация: 28.11.2013
Сообщений: 383
30.08.2022, 19:11
Можно попробовать requests_html для обработки js скриптов, но не всегда работает. Но render страницы будет долгим как в селениуме. Что касается ваших данных, то у меня получилось так:
Кликните здесь для просмотра всего текста

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import requests
import lxml
from bs4 import BeautifulSoup
import json
 
headers = {
    'authority': 'api.boerse-frankfurt.de',
    'accept': 'application/json, text/plain, */*',
    'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'client-date': '2022-08-29T20:11:34.358Z',
    'origin': 'https://www.boerse-frankfurt.de',
    'referer': 'https://www.boerse-frankfurt.de/',
    'sec-ch-ua': '"Chromium";v="104", " Not A;Brand";v="99", "Google Chrome";v="104"',
    'sec-ch-ua-mobile': '?1',
    'sec-ch-ua-platform': '"Android"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-site',
    'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Mobile Safari/537.36',
    'x-client-traceid': '79a81fe3b24f7c4be16068bad0b63825',
    'x-security': '33db81ccfd2bd47514906a1b1df54e28',
}
 
params = {
    'resolution': 'D',
    'isKeepResolutionForLatestWeeksIfPossible': 'false',
    'from': '1630095094',
    'to': '1661803894',
    'isBidAskPrice': 'false',
    'symbols': 'XETR:DE0008469008',
}
 
response = requests.get('https://api.boerse-frankfurt.de/v1/tradingview/lightweight/history/single', params=params, headers=headers)
 
json_data = response.text
json_data = json.loads(json_data)
 
time_pairs = json_data[0]['quotes']['timeValuePairs']
find_time_cell = 1661724000
 
for pair in time_pairs:
    if pair['time'] == find_time_cell:
        print(pair['value'])


Добавлено через 7 минут
У меня requestами не всё удалось найти, догадываюсь, что часть данных вычисляется скриптами, а не посылается с сервера.
1
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54
30.08.2022, 21:43  [ТС]
Спасибо что откликнулся на мою проблему, но видимо я не корректно объяснил свою задачу

Исходя из вашего когда я понял что код формирует запрос к API и уже апи формирует таблицу
мне же нужно именно спарсить страницу и извлечь из нее данные, они формируются без api

[attach]https://www.cyberforum.ru/attachment.php?attachmentid=1365250&stc= 1&d=1661884287[/attach]

я попробовал через render, но у меня ошибка и не могу с ней справиться

Python
1
2
3
4
5
6
7
8
9
10
from requests_html import HTMLSession
 
# эксперименты
@bot.message_handler(commands=['x'])
def x(message):
    bot.send_message(message.chat.id, 'начало эксперимента:')
    session = HTMLSession()
    r = session.get('https://www.boerse-frankfurt.de/index/dax')
    r.html.render()
    bot.send_message(message.chat.id, 'конец эксперимента:')
когда пишу r.html. не показывает что есть метод render, я пишу бот для телеги, подозреваю что нельзя render использовать в @bot.message_handler

как все таки через рендер попробовать?
Миниатюры
Парсинг сайтов с динамическими данными  
0
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54
05.09.2022, 00:04  [ТС]
А какие еще варианты спарсить сайт с JS есть?
Seleniumу не все серваки доступ дают
0
 Аватар для supmener
87 / 95 / 15
Регистрация: 26.06.2013
Сообщений: 4,754
08.09.2022, 17:30
Цитата Сообщение от bzda Посмотреть сообщение
Seleniumу не все серваки доступ дают
А как они определяют, кому давать, а кому нет?

Добавлено через 56 секунд
Имею в виду, если использовать fake модули.
0
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54
08.09.2022, 22:23  [ТС]
supmener, не знаю, предположил просто
0
Эксперт .NET
 Аватар для Usaga
14145 / 9374 / 1350
Регистрация: 21.01.2016
Сообщений: 35,299
09.09.2022, 03:34
Цитата Сообщение от bzda Посмотреть сообщение
Seleniumу не все серваки доступ дают
И вас не беспокоит тот факт, что селениум - просто библиотека-драйвер для управления самым обычным браузером? Вы с таким же успехом можете сказать, что серваки не дают доступ питону.
0
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54
09.09.2022, 19:08  [ТС]
Usaga, через селениум в хроме открывал один сайт - так он ругнулся и спарсилась только сообщение эксесс денайд

исходя из это го предположил что как то отслеживают через что доступ
0
Эксперт .NET
 Аватар для Usaga
14145 / 9374 / 1350
Регистрация: 21.01.2016
Сообщений: 35,299
10.09.2022, 03:44
bzda, предположение ошибочное.
0
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54
24.01.2023, 21:32  [ТС]
Цитата Сообщение от Skryp Посмотреть сообщение
Можно попробовать requests_html для обработки js скриптов, но не всегда работает. Но render страницы будет долгим как в селениуме. Что касается ваших данных, то у меня получилось так:
Кликните здесь для просмотра всего текста
Добавлено через 7 минут
У меня requestами не всё удалось найти, догадываюсь, что часть данных вычисляется скриптами, а не посылается с сервера.
Не мог бы ты в двух словах подсказать откуда взял данные для хидерс и парамс
Я в хроме в дев консоли смотрел запросы, ничего подобного не нашел
Или где и что почитать для изучения данной проблемы?
0
148 / 111 / 37
Регистрация: 28.11.2013
Сообщений: 383
26.01.2023, 00:22
Какой конкретно запрос я отловил тогда, я уже не помню, но алгоритм действий такой:
1) копируем данные запроса как curl
2) Гуглим :"curl to python"
3) Вставляем код и копируем python со всеми запросами, нажав на кнопку "copy to clipboard".
Миниатюры
Парсинг сайтов с динамическими данными   Парсинг сайтов с динамическими данными  
1
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54
26.01.2023, 13:26  [ТС]
блин, я думал как то в автомате это можно сделать, а тут получается нужно нужно выбрать из кучи запросов нужный и его уже колупать, да еще нужный запрос происходит с задержкой

вообще у меня был план такой

через селениум заходим на по ссылке, от селениума получаем лог с запросом
далее его сохраняем
потом уже делаем запрос и изучаем данные которые пришли по нему
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2023, 13:26
Помогаю со студенческими работами здесь

График QChart с динамическими данными
Подскажите, пожалуйста, что я делаю не так :wall: { ui->setupUi(this); // Создаём объект серии данных, // который...

Как сравнить таблицы с динамическими данными
Здравствуйте, дорогие эксель эксперты! Имеется таблица, во второй(я её ещё не сделал) данные могут измениться(должны), кроме имени и...

Создание кастомного календаря с динамическими данными
Раз с одной проблемой мне тут помогли, значит попробую еще раз может и тут мне чем то помогут (: В общем проблема состоит в том что есть...

Обмен данными между двумя динамическими массивами
Написать программу обмена данными между двумя динамическими массивами

Работа с динамическими данными. Исключение элементов из списка.
Необходимо исключить из списка элементы, относящиеся к учащимся у которых одна оценка 4, а остальные 5. Распечатать оставшийся список....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru