#!/usr/bin/env python # coding: utf-8 # # Программирование для всех # # *Алла Тамбовцева* # # ## Домашнее задание 4 # 1. Сгрузить с помощью библиотек `requests` и `BeautifulSoup` данные с html-страницы. В каком формате сохранять данные на предварительном этапе (список списков, кортежей, словарь, совершенно не важно). # 2. Сохранить сгруженные данные в формате датафрейма `pandas`. Присвоить столбцам таблицы внятные названия. При необходимости преобразовать типы данных в столбцах (чтобы числовые данные имели формат `float` или `integer`). Если в таблице присутствует "мусор", отфильтровать ненужные строки. # 3. Выгрузить получившийся датафрейм в csv-файл, назвать `html-<>.csv`, где вместо `<>` вставить свою фамилию. # 4. Загрузить ipynb-файл с кодом и полученный csv-файл [сюда](https://www.dropbox.com/request/6Bx4hJY6KqxUg7YlmPrA), на Dropbox. # **Вариант 1 (на 9)** # # Список курсов образовательной программы "Прикладная политология". Ссылки на страницы [1](https://www.hse.ru/ma/ps/courses), [2](https://www.hse.ru/ma/ps/courses/page2.html?year=2018) (так как все курсы не умещаются на одной). Каждая строка в итоговом датафрейме должна соответствовать одному курсу. В таблице должно быть 4 столбца: название курса, ссылка на страницу курса, статус курса (обязательный, по выбору и проч.), язык курса. # # **Вариант 2 (на 10)** # # Данные по Международному индексу счастья и его компонент за 2012 год. [Ссылка](https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D0%B4%D1%83%D0%BD%D0%B0%D1%80%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9_%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_%D1%81%D1%87%D0%B0%D1%81%D1%82%D1%8C%D1%8F) на страницу. Каждая строка в итоговом датафрейме должна соответствовать одной стране. В таблице должно быть 5 столбцов: название страны, HPI, Удовлетворенность жизнью, Ожидаемая продолжительность жизни, Экологический след. # *Подсказки* # # Фрагмент кода, показанный на семинаре (для курсов): # In[1]: import requests # In[2]: from bs4 import BeautifulSoup # In[3]: url = "https://www.hse.ru/ma/ps/courses" # In[4]: page = requests.get(url) page # In[5]: soup = BeautifulSoup(page.text, 'lxml') # In[6]: soup.find_all('div', {'class' : 'edu-events_title title large'}) # In[7]: links = soup.find_all('div', {'class' : 'edu-events_title title large'}) [i.text for i in links] # Фрагмент кода для варианта с Индексом счастья: # In[8]: url2 = "https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%B6%D0%B4%D1%83%D0%BD%D0%B0%D1%80%D0%BE%D0%B4%D0%BD%D1%8B%D0%B9_%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81_%D1%81%D1%87%D0%B0%D1%81%D1%82%D1%8C%D1%8F" # In[9]: page2 = requests.get(url2) soup2 = BeautifulSoup(page2.text, 'lxml') # In[10]: # soup2.find_all('table')[3] - уберите #, чтобы увидеть результат # In[11]: soup2.find_all('table')[3].find_all('td')[1]