@GreenX5

Парсинг данных с виджета на локальной странице?

Опрос данных, соотв. и парсинг раз в секунду, чтобы избежать ожиданий откликов на request удаленной страницы поместил виджет сервиса на локальную страницу, гугл драйвером один раз открываю и считываю так часто как мне нужно. Проблема - браузер видит приходящие значения, а забрать на парсинг не получается, вижу скрипт и какую-то ахинею. Прошу помочь рабочим примером, если это в принципе реализуемо.

Страничка с виджетом на диск C

spoiler
<!DOCTYPE html>
<head>
<meta http-equiv=Content-Type content="text/html;charset=UTF-8">
<title>ind</title>
</head>
<body>

<!-- TradingView Widget BEGIN -->
<div class="tradingview-widget-container">
  <div class="tradingview-widget-container__widget"></div>
  <div class="tradingview-widget-copyright">
  <a href="https://www.tradingview.com/markets/indices/" rel="noopener" target="_blank">
  <span class="blue-text">Indices</span></a> by TradingView</div>
  <script type="text/javascript" src="https://s3.tradingview.com/external-embedding/embed-widget-market-quotes.js" async>
  {
  "width": 770,
  "height": 450,
  "symbolsGroups": [
    {
      "name": "Indices",
      "originalName": "Indices",
      "symbols": [
        {
          "name": "XETR:DAX",
          "displayName": "DAX"
        },
        {
          "name": "CURRENCYCOM:VIX",
          "displayName": "VIX"
        },
        {
          "name": "CURRENCYCOM:US500",
          "displayName": "SIP"
        },
        {
          "name": "CME:SP1!",
          "displayName": "FSIP"
        }
      ]
    }
  ],
  "colorTheme": "light",
  "isTransparent": false,
  "locale": "en"
}
  </script>
</div>
<!-- TradingView Widget END -->

</body>


Парсер

spoiler
from selenium import webdriver
import time
from bs4 import BeautifulSoup

options = webdriver.ChromeOptions()
#options.add_argument('headless')

browser = webdriver.Chrome(options=options)
browser.get('file:///C:/start/ind.html')
time.sleep(5)

page = browser.page_source
soup = BeautifulSoup(page, 'html.parser')

print(soup)

browser.quit()
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Все данные в iframe лежат

iframe = browser.execute_script("return document.getElementsByTagName('iframe')[0]")
browser.switch_to_frame(iframe)

page = browser.page_source
print(page)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы