В этом уроке мы будем извлекать данные из 5 лучших футбольных лиг во всем мире: EPL, La Liga, Serie A, Bundesliga и Ligue 1. Однако, чтобы получить эти данные, мы будем извлекать их с официального спортивного веб -сайта ( incement.com ). Затем мы узнаем, как хранить и управлять этими данными с фауной.
Чтобы полностью понять этот урок, вы должны иметь следующее:
- Python 3.7 или новее.
- Основное понимание Фауна Анкет
- Основные знания Джанго.
- Текстовый редактор.
С приведенными выше предварительными условиями, мы теперь можем начать создавать наше приложение для веб -скребка.
FAUNA-это клиентская база данных без сервера, которая использует GraphQL и язык запросов FAUNA (FQL) для поддержки различных типов данных и реляционных баз данных в API без сервера. Вы можете узнать больше об фауне в их официальной документации Здесь Анкет Если вы впервые услышали о Фауне, посетите мою предыдущую статью Здесь Для краткого введения.
Установка требуемых библиотек
Библиотеки, необходимые для этого урока, следующие:
- Numpy – фундаментальный пакет для научных вычислений с Python
- Панды-библиотека, обеспечивая высокопроизводительные, простые в использовании структуры данных и Инструменты анализа данных
- Запросы-единственная библиотека HTTP без GMO для Python, безопасная для потребления человеком. (Любите эту строку от официальных документов: D)
- BeautifulSoup – библиотека Python для извлечения данных из файлов HTML и XML.
Чтобы установить библиотеки, необходимые для этого урока, запустите следующие команды ниже:
pip install numpy pip install pandas pip install requests pip install bs4
Теперь, когда у нас установлены все необходимые библиотеки, давайте доберемся до создания нашего веб -скребка.
Импорт библиотек Python
import numpy as np import pandas as pd import requests from bs4 import BeautifulSoup import json
Проведение исследования сайта
Первым шагом в любом проекте по скребке веб -царапины является исследование веб -страницы, которую вы хотите поцарапать и узнать, как она работает. Это имеет решающее значение для поиска того, где получить данные с сайта; Поэтому здесь мы начнем.
На домашней странице мы можем видеть, что на сайте есть данные для шести европейских лиг. Тем не менее, мы будем извлекать данные только для 5 лучших лиг (команды, исключая RFPL).
Мы также можем заметить, что данные на сайте начинаются с 2014/2015 по 2020/2021. Давайте создадим переменные для обработки только той информации, которую нам требуется.
# create urls for all seasons of all leagues base_url = 'https://understat.com/league' leagues = ['La_liga', 'EPL', 'Bundesliga', 'Serie_A', 'Ligue_1'] seasons = ['2016', '2017', '2018', '2019', '2020']
Следующий шаг – выяснить, где хранятся данные на веб -странице. Для этого откройте инструменты разработчиков в Chrome, перейдите на вкладку «Сеть», найдите файл данных (в этом примере, 2018) и выберите вкладку «Ответ». После выполнения запросов это то, что мы получим. получить (URL)
Просматривая контент веб -страницы, мы обнаружили, что данные сохраняются под элементом «скрипта» в Teamsdata
переменная и кодируется JSON. В результате нам нужно отследить этот тег, извлечь из него JSON и преобразовать его в структуру данных, читаемую на питоне.
Декодирование данных JSON
season_data = dict() for season in seasons: url = base_url+'/'+league+'/'+season res = requests.get(url) soup = BeautifulSoup(res.content, "lxml") # Based on the structure of the webpage, I found that data is in the JSON variable, under
Оригинал: “https://dev.to/chukslord1/how-to-build-a-soccer-data-web-scraper-with-django-and-fauna-2l1o”