Парсинг данных с Bovada
Table Of Content
Ранее я уже упоминал, что я являюсь менеджером продукта с любопытством к данным, поэтому вот моя первая статья о некоторых данных, с которыми я играюсь. Если вы ищете мою первую статью о продукте, вы можете посмотреть ее здесь.
Хотя я бы не назвал себя игроком, мне нравится использовать Bovada в качестве источника данных, чтобы увидеть, как меняются некоторые тренды со временем для некоторых соревнований. Я отслеживал НБА, НКАА, президентские выборы, Оскар и даже победителя "Игры престолов". Это лишь подтверждает мое любопытство к данным, интересно видеть, как данные меняются со временем.
Итак, как я это делаю? Я активно использую Jupyter, который представляет собой интерфейс блокнота, позволяющий использовать различные языки программирования... Я использую его в основном для Python.
Хотя Python отлично подходит для анализа данных, Jupyter также позволяет использовать другие библиотеки для выполнения других функций. В этой статье я использую Selenium для парсинга Bovada и создания набора данных, который можно использовать для анализа данных.
Я предоставлю ссылку на полное решение в конце, но я хочу пройти по каждой ячейке, чтобы вы поняли, что мы делаем.
Сначала импортируем несколько пакетов, чтобы помочь нам достичь нашей цели. Вы увидите, что мы импортируем Selenium, Datetime, CSV, Numpy и Pandas. Все они помогут нам считывать или получать данные для создания нашего набора данных.
Также я импортирую Plotly как инструмент визуализации данных, о котором я расскажу в другой статье... Данные эффективны только в том случае, если вы можете использовать их для рассказа истории, и вот где вступает в игру визуализация.
Хорошо, после импорта всего необходимого мы настроим несколько функций. Первые из них довольно простые и будут использоваться для анализа данных в будущей статье.
Следующая функция - это место, где происходит весь парсинг. Я попытался прокомментировать некоторые области, чтобы вы могли следовать за ними, но я также дам общий обзор здесь. Она длинная, но не такая сложная.
Мы создаем эту функцию для передачи двух значений: URL Bovada для парсинга и имя файла для чтения и сохранения исторических данных.
Сначала мы инициируем Selenium, вам нужно будет скачать ChromeDriver и указать этот код на вашем локальном ChromeDriver. В конце этого первого раздела будет запущен Selenium на URL, который вы передали.
Затем мы парсим значения с веб-сайта на основе их имени элемента, определенного разработчиками веб-сайта Bovada. Вы можете использовать инструменты разработчика Chrome, чтобы найти элементы или использовать другие функции Selenium для парсинга нужных вам данных.
В следующей части мы проверяем, есть ли у нас входной файл. Поскольку каждый запуск является моментом во времени, я создаю файл истории, к которому мы добавляем данные, чтобы иметь историческое представление этих данных со временем. Если входного файла нет, мы продолжим.
Затем мы инициируем три объекта списка для трех интересующих нас частей данных: название ставки (например, Чемпионат мира 2019 года), результат (например, Хьюстон Астрос) и цена ставки (например, +225). Мы будем перебирать объекты Selenium, которые мы загрузили ранее, чтобы добавить каждое значение из этого списка в объект списка. Название не требует перебора, так как оно будет одинаковым для каждого.
Наш последний раздел будет заключаться в том, чтобы взять данные из объектов списка и поместить их в Pandas dataframe. Мы добавим временную метку, чтобы мы могли просматривать данные со временем, и мы добавим его к нашему входному dataframe, если оно существует. Наконец, мы запишем файл, чтобы у нас были сохранены исторические данные локально, закроем браузер и вернем dataframe для дальнейшего анализа данных.
Когда все это создано в виде функции, остается только задать URL и имя файла, а затем запустить функцию.
Теперь у вас есть готовый блокнот.
Запуская его со временем, вы начнете собирать набор данных, который можно использовать для анализа и визуализации данных. Я расскажу об этом в следующей статье о данных.