Вы можете соскрести изменяющийся цвет с веб-сайта? - PullRequest
0 голосов
/ 12 июня 2019

Я собираю некоторые значения ветра с веб-сайта, и это сработало, чтобы очистить цифры, только я не могу очистить цвет bg от чисел.(цвет фона меняется со значением и очень важен)

https://www.windguru.cz/station/219

это страница, и я хочу очистить цвет от ветра.

page = requests.get('https://www.windguru.cz/station/219')
soup = BeautifulSoup(page.text, "lxml")
table = soup.find_all("div",{''})

1 Ответ

1 голос
/ 13 июня 2019

В необработанной среде HTTP-запросов вы собираете только тот HTML-код, который возвращается сервером. Таким образом, если страница постоянно отображает новые данные, вам понадобится браузер без монитора, чтобы наблюдать за этими изменениями. Вы можете сказать, что данные отображаются на этой странице, потому что наблюдение за источником веб-сайта отличается от источника, который вы видите, если вы «проверяете элемент» на странице.

Когда вы используете Python для запроса источника страницы, вы получаете только «скелетный» HTML и сценарии рендеринга, но не фактические визуализированные данные.

Похоже, эта страница постоянно проверяет PHP-скрипт каждые ~ 20 секунд, чтобы собрать новые данные диаграммы. Затем он использует JavaScript для интерпретации этих данных и анализа их в видимой диаграмме ... похоже, он использует SVG для отображения данных пути.

Вот данные в ответ на скрипт PHP, которые мы можем найти, просмотрев вкладку «сеть» в веб-инспекторе:

https://www.windguru.cz/int/iapi.php?q=station_data_current&id_station=219&date_format=Y-m-d%20H%3Ai%3As%20T&_mha=f4d18b6c

{
    "wind_avg": 6.99,
    "wind_max": 8.93,
    "wind_min": 4.85,
    "wind_direction": 171.215,
    "temperature": 13,
    "mslp": null,
    "rh": null,
    "datetime": "2019-06-12 23:08:17 CEST",
    "unixtime": 1560373697
}

У вас есть 2 варианта здесь:

1) Используйте безголовый браузер, такой как Selenium , NightmareJS , Puppeteer и т. Д., Чтобы визуализировать живую версию сайта и собирать данные сразу после диаграммы. оказал. Это был бы более простой ответ, и тот, который я бы порекомендовал. У безголовых браузеров есть недостаток в использовании большего количества памяти при работе, поэтому, если это решение необходимо увеличить, это может быть проблематично.

2) Соберите оперативные данные непосредственно с сервера, отправив запрос по ссылке выше, а затем интерпретируйте их в соответствии с цветами, с которыми они соотносятся. Это, вероятно, самое сложное решение, но если об использовании браузера без головы не может быть и речи, это то, что вам придется сделать. Вам нужно будет прочитать JavaScript, который страница использует для «раскрашивания» данных, и имитировать его самостоятельно в Python.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...