Отказ от ответственности. «TrickyCases» — это серия сообщений с относительно короткими фрагментами кода, полезными в повседневной практике машинного обучения. Здесь вы можете найти то, что вы искали бы в StackOverflow через несколько дней.

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

Вы можете найти код из моих постов о Web Scraping здесь в удобном для просмотра формате.

Прежде чем мы перейдем к части очистки, убедитесь, что:

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

Часть, где мы царапаем

Как и было обещано, очищающая часть будет относительно простой. Для практики возьмем страницу типа эта. Прокрутите вниз до графика Максимальная, минимальная и средняя температура, и вы увидите среднюю температуру в градусах Цельсия в течение каждого месяца в Брюсселе с 2009 года. Теперь откройте консоль браузера и запустите следующий скрипт:

Highcharts.charts[0].series[0].data

После некоторого изучения вы увидите, что теперь у вас есть доступ ко всем необработанным данным с графика. Более того, обладая некоторыми знаниями в области javascript, вы даже сможете аккуратно печатать данные. Хитрость для парсинга состоит в том, чтобы автоматизировать этот процесс с помощью селена и панд.

Ниже я поделюсь с вами упрощенной версией такого скрипта, чтобы вы могли уловить суть:

В этом коде:

  1. Вы позвоните на целевой сайт
  2. Подождите, пока не появится график HighCharts
  3. Анализировать данные со связанными функциями JS
  4. Сохраните его в фрейме данных и сохраните в локальной папке.

Имейте в виду, что код предполагает, что у вас уже установлен, запущен и доступен chromedriver. Вот несколько хороших руководств о том, как это сделать в различных операционных системах:

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