Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54

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

29.08.2022, 12:35. Показов 2219. Ответов 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,753
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
14122 / 9341 / 1350
Регистрация: 21.01.2016
Сообщений: 35,102
09.09.2022, 03:34
Цитата Сообщение от bzda Посмотреть сообщение
Seleniumу не все серваки доступ дают
И вас не беспокоит тот факт, что селениум - просто библиотека-драйвер для управления самым обычным браузером? Вы с таким же успехом можете сказать, что серваки не дают доступ питону.
0
8 / 6 / 2
Регистрация: 29.08.2022
Сообщений: 54
09.09.2022, 19:08  [ТС]
Usaga, через селениум в хроме открывал один сайт - так он ругнулся и спарсилась только сообщение эксесс денайд

исходя из это го предположил что как то отслеживают через что доступ
0
Эксперт .NET
 Аватар для Usaga
14122 / 9341 / 1350
Регистрация: 21.01.2016
Сообщений: 35,102
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
Ответ Создать тему
Новые блоги и статьи
YAFU@home — распределённые вычисления для математики. На CPU
Programma_Boinc 20.01.2026
YAFU@home — распределённые вычисления для математики. На CPU YAFU@home — это BOINC-проект, который занимается факторизацией больших чисел и исследованием aliquot-последовательностей. Звучит. . .
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru