#!/usr/bin/env python # coding: utf-8 # # Web-scraping: сбор данных из баз данных и интернет-источников # # *Алла Тамбовцева, НИУ ВШЭ* # # ## Домашнее задание 2 # # Задание выполняется самостоятельно. При любых нетривиальных совпадениях в решениях задач все вовлечённые домашние работы будут оценены на 0 баллов. # ### Задание 1 (10 баллов) # # Напишите программу, которая заходит на страницу со списком сотрудников кафедры высшей математики (https://hmat.hse.ru/persons) и выгружает ссылки на страницы сотрудников. Если ссылки неполные (относительные или без `http:`), исправьте это. Итог выполнения этого задания – список со ссылками на страницы сотрудников без повторений (35 ссылок). # ### Задание 2 (20 баллов) # # Напишите программу, которая заходит на страницу 12-го сотрудника из списка, полученного в задании 1, и выгружает следующую информацию: # # * ФИО сотрудника; # * год, в котором сотрудник начал работать в НИУ ВШЭ; # * список языков, которыми владеет сотрудник. # # Итог выполнения этого задания – список из трёх элементов: ФИО сотрудника (строка), год начала работы в НИУ ВШЭ (целое число), языки, которым владеет сотрудник (строка, склеенная из элементов списка). Пример результата (другой сотрудник): # # ["Тамбовцева Алла Андреевна", 2014, # "английский испанский французский словенский"] # # **Подсказка:** чтобы превратить строку в целое число, можно воспользоваться функцией `int()`: # # int("2014") # 2014 # ### Задание 3 (10 баллов) # # Напишите функцию `hse_info()`, которая принимает на вход ссылку на страницу любого сотрудника и возвращает список с информацией из задания 2. # ### Задание 4 (20 баллов) # # Примените функцию `hse_info()` ко всем ссылкам в списке из задания 1 и сохраните результаты в удобном для вас виде. Если информации о языках нет, а вместо неё выгружается что-то другое (там есть 5 страниц с нарушением структуры), замените это другое на строку "нет данных". # # Преобразуйте полученные результаты в датафрейм `pandas` и выгрузите его в файл Excel. Перед выгрузкой проверьте, что датафрейм содержит нужно число строк (35 сотрудников) и понятные названия столбцов.