Skip to content

Knispel2/scraping_hw

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

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

Необходимо разработать программу для сбора информации по участникам предстоящего чемпионата Европы по футболу путем скачивания некоторых 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

Также необходимо вывести в произвольном виде

  • имя игрока младше 25 лет, сыгравшего больше всего матчей за за клубную карьеру; забившего больше всего голов за клубную карьеру;
  • имя самого высокого игрока, забившего больше 10 голов;
  • имя самого старшего вратаря;
  • имя игрока, сыгравшего больше всего матчей за сборную; забившего больше всего голов за сборную.

Проверка

Необходимо

  • пройти автоматизированную проверку. В этой проверке идет работа с локальной копией части википедии.
  • представить результаты парсинга реального раздела википедии и обработки результатов этого парсинга. Стартовая страница - ЧЕ 2024.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • HTML 99.8%
  • Other 0.2%