Skip to content

sergeychur/scraping_hw

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Домашнее задание по скрейпингу

Постановка задачи

Необходимо разработать программу для сбора информации по сборным-участницам чемпионата Европы по футболу 2024 путем скачивания некоторых html-страниц Википедии и их парсинга. Программа должна запускаться bash-скриптом scripts/run.sh (сейчас там заглушка, надо доработать). Этот скрипт должен принимать в качестве аргументов URL, с которого предполагается начать обход и путь до файла с результами. Пример запуска:

./scripts/run.sh http://localhost/wiki/Чемпионат_Европы_по_футболу_2024 ./real_results/result.jsonl

Язык программирования - предпочтительно Python.

Запрещено использовать API Википедии, XML, SQL дампы и другие способы обойти требование парсить HTML:) Программа должна корректно обрабатывать внешние ошибки.

Подготовка окружения должна осуществляться скриптом scripts/prepare.sh (сейчас там установка библиотеки requests в venv, также надо доработать).

Результат сохранить в формате jsonl. Каждая строчка - информация об игроке из последнего созыва сборной-участницы.

Для каждого игрока надо сохранить следующее.

  • URL страницы в википедии ("url").
  • Имя ("name") - массив вида ["Фамилия", "Имя"].
  • Рост ("height").
  • Позиция на поле ("position").
  • Текущий клуб ("current_club").
  • Число игр за клубную карьеру ("club_caps").
  • Число пропущенных голов за клубную карьеру ("club_conceded"). Заполняем только для вратарей, для полевых игроков - всегда 0.
  • Число забитых голов за клубную карьеру ("club_scored"). Заполняем только для полевых игроков, для вратарей - всегда 0.
  • Число игр за национальную сборную ("national_caps"). Рассматриваем только игры (с голами также) за взрослую команду (без учета всяких "сборная до 21" и т.п.).
  • Число пропущенных голов за клубную карьеру ("national_conceded"). Заполняем только для вратарей, для полевых игроков - всегда 0.
  • Число забитых голов за клубную карьеру ("national_scored").
  • Национальная команда ("national_team").
  • Таймстемп даты рождения в секундах ("birth"). Время надо парсить, считая, что оно в таймзоне UTC.

Пример:

{
    "url": "http://localhost/wiki/%D0%A2%D1%80%D0%B0%D0%BF%D0%BF,_%D0%9A%D0%B5%D0%B2%D0%B8%D0%BD",
    "name": [
        "Трапп",
        "Кевин"
    ],
    "height": 189,
    "position": "вратарь",
    "current_club": "Айнтрахт (Франкфурт)",
    "club_caps": 506,
    "club_conceded": 632,
    "club_scored": 0,
    "national_caps": 9,
    "national_conceded": 13,
    "national_scored": 0,
    "national_team": "Сборная Германии по футболу",
    "birth": 647380800
}

Для некоторых полей (таких как national_scored, national_conceded и проч.) значения присутствуют в нескольких местах. Причем эти значения могут долго не обновляться. Предлагается брать наибольшее значение из найденных. Пример разных вариантов для страницы футболист. Можно сложить числа выступлений за разные клубы, а можно взять результат из таблицы с детальной статистикой. Тут числа из детальной статистики больше, поэтому берем их.

Блок справа Детальная статистика внизу
brief detailed

Проверка

Необходимо

  • пройти автоматизированную проверку. В этой проверке идет работа с локальной копией части википедии.
  • скачать и распарсить реальный раздел википедии. Стартовая страница - ЧЕ 2024. Сохранить html-страницы в архиве test_data/real/htmls.tar.gz; результат парсинга в файле test_data/real/result.jsonl.
  • Сохранить файл с отличиями между результатами парсинга локальной копии википедии и реального раздела (test_data/real/result.jsonl и test_data/local/result.jsonl). Надо вывести каких игроков не оказалось в реальном разделе из локального варианта, какие добавились, игрока с наибольшей разницей забитых голов.
  • представить код на проверку через pull request. Просьба прежде чем создавать PR убедиться, что разработанная программа работает локально.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published