Парсинг данных о коронавирусе в MS Excel
Table Of Content
- Вы можете ознакомиться с моим видеоуроком на эту тему на [YouTube](https://www.youtube.com/watch?v=CTRYYz1u7Y8)
- Что будет рассмотрено в этом блоге
- Предварительные требования
- Что такое парсинг веб-страниц?
- Введение
- Процесс: три простых шага
- Его использование
- Что такое коронавирус?
- Источник данных
- Время для кода
- Понимание основ HTML
- requests
- Beautiful soup
- Извлечение данных
- Сохранение данных
- Экспорт данных
Вы можете ознакомиться с моим видеоуроком на эту тему на YouTube
Случаи коронавируса быстро увеличиваются по всему миру. В этом уроке я расскажу вам, как парсить данные о коронавирусе и сохранять их в формате MS Excel.
Что будет рассмотрено в этом блоге
- Введение в парсинг данных
- Основы HTML
- Как парсить веб-сайт
- Как экспортировать данные в файл Excel
Предварительные требования
- python
- Beautiful soup
- pandas
- HTML
- CSS
Что такое парсинг веб-страниц?
Введение
Если вы когда-либо копировали и вставляли информацию с веб-сайта, то выполняли ту же функцию, что и любой парсер веб-страниц, только в микроскопическом, ручном масштабе.
Парсинг веб-страниц, также известный как извлечение данных с веб-страниц, это процесс получения или "парсинга" данных с веб-сайта. Эта информация собирается, а затем экспортируется в формат, который более полезен для пользователя, будь то таблица или API.
Два важных момента, которые следует учесть здесь:
Процесс: три простых шага
Его использование
Он может служить нескольким целям, наиболее популярные из которых - принятие инвестиционных решений, мониторинг конкурентов, мониторинг новостей, анализ рыночных тенденций, оценка стоимости недвижимости, оценка доходности аренды, политика и кампании и многое другое.
Если вы хотите узнать об этом подробнее, я прикрепляю ссылку на Википедию здесь. Вы можете посмотреть.
Что такое коронавирус?
Я не думаю, что коронавирусу нужно представление, но на всякий случай, если кто-то не знает, коронавирусная болезнь (COVID-19) - это инфекционное заболевание, вызванное вновь обнаруженным коронавирусом.
Вирус COVID-19 передается в основном через капли слюны или выделения из носа, когда зараженный человек кашляет или чихает.
Если вы хотите узнать об этом подробнее, я прикрепляю ссылку на Википедию здесь. Вы можете посмотреть.
Источник данных
Нам нужна веб-страница, чтобы получить данные о коронавирусе. Поэтому я использую веб-сайт Worldometer здесь.
Вы можете использовать приложенную ссылку для перехода на веб-сайт. Вы также можете обратиться к веб-сайту ВОЗ. Веб-страница Worldometer будет выглядеть примерно так:
Нас интересуют данные, содержащиеся в таблице на веб-сайте Worldometer, где перечислены все страны вместе с текущим количеством зарегистрированных случаев коронавируса, новыми случаями за день, общим количеством смертей, новыми смертями за день и т.д.
Теперь мы готовы начать кодирование.
Время для кода
Вы можете найти код в моем репозитории Github
Давайте разберемся
Вам понадобятся несколько библиотек, поэтому сначала вам нужно установить их. Перейдите в командную строку и установите их.
pip install requests
pip install lxml
pip install bs4
Теперь давайте посмотрим, что мы можем сделать с этими библиотеками.
Понимание основ HTML
Это базовый синтаксис веб-страницы HTML. Каждый тег служит блоком внутри веб-страницы:
<!DOCTYPE html>
: HTML-документы должны начинаться с объявления типа.- HTML-документ содержится между тегами
<html>
и</html>
. - Мета-теги и скрипты HTML-документа находятся между тегами
<head>
и</head>
. - Видимая часть HTML-документа находится между тегами
<body>
и</body>
. - Заголовки заголовков определяются с помощью тегов
<h1>
до<h6>
. - Параграфы определяются с помощью тега
<p>
. - Другие полезные теги включают
<a>
для гиперссылок,<table>
для таблиц,<tr>
для строк таблицы и<td>
для столбцов таблицы.
requests
- Используйте библиотеку requests для получения страницы.
- Это может не сработать, если у вас есть брандмауэр, блокирующий Python/Jupyter.
- Иногда вам может потребоваться запустить это дважды, если первый раз не удалось.
import requests#делаем запросы с веб-страницы
result = requests.get('https://www.worldometers.info/coronavirus/country/india/')print(result.text)
Библиотека requests, которую мы загрузили, отправляет запрос и получает ответ, чтобы получить запрос с веб-страницы, мы используем метод requests.get(website URL)
.
Если запрос успешен, он будет сохранен как огромная строка Python. Мы сможем получить полный исходный код веб-страницы, когда запустим result.text
.
Но код не будет структурирован.
Beautiful soup
Библиотека BeautifulSoup уже имеет множество встроенных инструментов и методов для извлечения информации из строки такого типа (в основном HTML-файла). Это библиотека Python для извлечения данных из HTML и XML файлов.
Используя BeautifulSoup, мы можем создать объект "soup", который содержит все "ингредиенты" веб-страницы.
Если вы хотите узнать больше о BeautifulSoup, я прикрепляю ссылку на документацию здесь. Вы можете посмотреть.
import bs4soup = bs4.BeautifulSoup(result.text,'lxml')
print(soup)
И теперь импортируем B.S. для следующего шага - фактического создания переменной soup
. Мы передадим две вещи: строку result.text
и строку lxml
.
Lxml проходит через этот HTML-документ и определяет, что является CSS-классом, что является CSS-идентификатором, какие есть различные элементы и теги HTML и т.д.
Извлечение данных
Найти div Чтобы найти элемент, вам нужно щелкнуть правой кнопкой мыши и выбрать "Инспектировать" на количестве случаев. См. прикрепленный снимок экрана ниже.
нам нужно найти правильный класс. class_= 'maincounter-number'
подходит для наших целей. См. прикрепленный снимок экрана ниже.
Объект Beautiful Soup создан в нашем скрипте Python, и HTML-данные веб-сайта были извлечены со страницы. Далее нам нужно получить данные, которые нас интересуют, из HTML-кода.
cases = soup.find_all('div' ,class_= 'maincounter-number')
print(cases)
Все еще есть много HTML-кода, который нам не нужен. Наши желаемые данные находятся внутри элемента div HTML и внутри class_= 'maincounter-number'
. Мы можем использовать эту информацию, чтобы дальше очистить извлеченные данные.
Сохранение данных
нам нужно сохранить полученные данные в форме, которую можно эффективно использовать. Для этого проекта все данные будут сохранены в виде списка Python. Для этого мы будем использовать следующий код:
data = []#найти тег span и получить данные из него
for i in cases:
span = i.find('span')
data.append(span.string)print(data)
мы будем использовать span
для получения данных из div
.
Нам нужны только числа, мы не хотим иметь дело с тегами. Поэтому мы будем использовать span.string
для получения чисел.
Мы будем обновлять числа в списке data
Теперь, когда у нас есть числа, мы готовы экспортировать наши данные в файл Excel.
Экспорт данных
Наш последний шаг - экспорт данных в Ms-excel. Для этой цели я использую Pandas
Чтобы загрузить пакет pandas и начать работать с ним, импортируйте пакет. Согласованный в сообществе псевдоним для pandas - pd, поэтому загрузка pandas как pd считается стандартной практикой.
Если вы хотите узнать больше о Pandas, я прикрепляю ссылку на документацию здесь. Вы можете ознакомиться.
import pandas as pd
df = pd.DataFrame({"ДанныеКоронавируса": data})#название столбцов
df.index = ['ВсегоСлучаев', 'Смерти', 'Выздоровевшие']#имя файла
df.to_csv('Corona_Data.csv')
DataFrame - это двумерная структура данных с метками, потенциально неоднородная табличная структура данных с метками осей (строк и столбцов).
df = pd.DataFrame({"ДанныеКоронавируса": data})
используется для создания DataFrame и дает ему имя, а также связывает его с ранее созданным списком data
.
Затем мы задаем имена столбцов с помощью df.index
. Это будет выглядеть примерно так.
Последний шаг, мы готовы экспортировать данные в Ms-excel. Мы будем использовать df.to_csv
для этого.
Вот наш результат
ПРИМЕЧАНИЕ: Результат зависит от текущей статистики
Вы можете найти код в моем репозитории на Github
Также ознакомьтесь с моими другими блогами:
- Как создать свое расширение для Google Chrome
- Instagram Bot
- Twitter Bot
- Автоматизация MS Teams с помощью Python
- Профиль README на GitHub
Вы также можете связаться со мной в Twitter
Я надеюсь, что это помогло вам понять, как парсить данные о коронавирусе в Excel.
Если у вас есть какие-либо вопросы или предложения, не стесняйтесь обращаться ко мне в разделе комментариев ниже.
Ресурсы: