проект по дисциплине "Основы программирования в Python"
Система автоматического поиска (мэтчинга) научного руководителя
Цель
Основным "продуктом" нашей работы является создание программы , способной обработать запрос студента таким образом, чтобы сформировать некоторый пул научных руководителей, отвечающих конкретным запросам студента
Актуальность
Практическая
Возможность комфортного, а главное – быстрого поиска научного руководителя
Социальная
Сервис служит развитию нашего образовательного университетского портала
Этапы проделанной работы
Создание реестра опубликованных на сайте ВШЭ научных интересов и соответствующих им ссылок, направляющих на страницу отдельного научного интереса
Унификация https-путей
Обработка вводных данных пользователя
Агрегирование обработанной информации в формате вывода

В первую очередь, необходимо было импортировать в среду библиотеки, которые будут использованы в ходе парсинга сайта. В представленном проекте использовались библиотеки requests и bs4
import requests
from bs4 import BeautifulSoup
Были созданы 2 функции - name и links

Функция name
Поиск названия научного интереса, по которому программа аккумулирует основную информацию, и его "очищение"
def name(x):
    page0 = requests.get(x)
    soup0 = BeautifulSoup(page0.text, 'lxml')
    name = soup0.find('h1', class_='main_title').text
    name = name[18:-13]
    return name
Функция links
Создание реестра полноценных ссылок на страницы преподавателей, которые затем используются для вывода
def links(x):
    page0 = requests.get(x)
    soup0 = BeautifulSoup(page0.text, 'lxml')
    links = []
    links_new = []
    particpage = soup0.find_all('a', class_='link link_dark large b')
    for person in particpage:
        links.append(person.get('href'))
    for lin in links:
        lin = 'https://www.hse.ru' + lin
        print(str(lin))
    return ' '
Приводим информацию сайта в читабельный для среды python вид
url = 'https://www.hse.ru/org/persons/ilist'
page = requests.get(url)
Находим ссылки на интересы, которые входят в пул сайта ВШЭ
soup = BeautifulSoup(page.text, 'lxml')
content = soup.find_all('a', class_='link')
Создаем словарь с двумя основными ключами: title, который содержит в себе название интереса; link, который содержит в себе ссылку на страницу интереса
interests = []

for interest in content:
    interests.append({
        'title': interest.text,
        'link': interest.get('href')})
Унификация ссылок
Сложность обрабатываемой информации заключается в том, что почти все ссылки не имеют начала в виде унифицированного пути https://www.hse.ru. В связи с этим необходимо написать код, который эту унификацию произведет. Помимо этого, полученная база данных содержит в себе "лишние ссылки", поскольку под категорию 'a', class_='link' попадают не только интересующие нас ссылки, но и сторонние ссылки, например, на сайты других кампусов.
for each_zapros in interests:
    for k, v in each_zapros.items():
        if k == 'link':
            if 'www' not in v:
                each_zapros[k] = 'https://www.hse.ru' + v
interests = interests[36:]
База данных готова к обработке!
Уникальных вкладок сайта ВШЭ
19646
Алгоритм работы
1
Принимается интересующий запрос
2
Программа осуществляет поиск запроса в значениях собранного словаря в ключе 'title'
3
Если запрос соответствует значению, программа переходит на второе значение словаря с ключом 'link' и копирует его. Итогом становится база ссылок
4
Программа переходит по каждой ссылке и собирает адреса преподавателей, которые на этих сайтах представлены.
5
Программа аккумулирует полученную информацию и выводит ее по заранее заданному образцу: происходит вывод названия направления, затем ссылки на это направление
zapros = input()
zapros_url = []
for j in interests:
    for k,v in j.items():
        if zapros in v:
            zapros_url.append(j['link'])
for page in zapros_url:
    print('Название направления: ' + name(page))
    print('Ссылка на направление: ' + str(page))
    print("Ссылки на преподавателей: ")
    print(links(page))
Наша команда
Никита Зарипов
Даша Пашкова
Никита Рыжков
Даша Ковалевская
Made on
Tilda