CoderCastrov logo
CoderCastrov
JavaScript

Парсинг данных о коронавирусе в MS Excel

Парсинг данных о коронавирусе в MS Excel
просмотров
6 мин чтение
#JavaScript

Вы можете ознакомиться с моим видеоуроком на эту тему на YouTube

Случаи коронавируса быстро увеличиваются по всему миру. В этом уроке я расскажу вам, как парсить данные о коронавирусе и сохранять их в формате MS Excel.

Что будет рассмотрено в этом блоге

  • Введение в парсинг данных
  • Основы HTML
  • Как парсить веб-сайт
  • Как экспортировать данные в файл Excel

Предварительные требования

- python
- Beautiful soup
- pandas
- HTML
- CSS

Что такое парсинг веб-страниц?

Введение

Если вы когда-либо копировали и вставляли информацию с веб-сайта, то выполняли ту же функцию, что и любой парсер веб-страниц, только в микроскопическом, ручном масштабе.

Парсинг веб-страниц, также известный как извлечение данных с веб-страниц, это процесс получения или "парсинга" данных с веб-сайта. Эта информация собирается, а затем экспортируется в формат, который более полезен для пользователя, будь то таблица или API.

Два важных момента, которые следует учесть здесь:

Процесс: три простых шага

Его использование

Он может служить нескольким целям, наиболее популярные из которых - принятие инвестиционных решений, мониторинг конкурентов, мониторинг новостей, анализ рыночных тенденций, оценка стоимости недвижимости, оценка доходности аренды, политика и кампании и многое другое.

Если вы хотите узнать об этом подробнее, я прикрепляю ссылку на Википедию здесь. Вы можете посмотреть.

Что такое коронавирус?

Я не думаю, что коронавирусу нужно представление, но на всякий случай, если кто-то не знает, коронавирусная болезнь (COVID-19) - это инфекционное заболевание, вызванное вновь обнаруженным коронавирусом.

Вирус COVID-19 передается в основном через капли слюны или выделения из носа, когда зараженный человек кашляет или чихает.

Если вы хотите узнать об этом подробнее, я прикрепляю ссылку на Википедию здесь. Вы можете посмотреть.


Источник данных

Нам нужна веб-страница, чтобы получить данные о коронавирусе. Поэтому я использую веб-сайт Worldometer здесь.

Вы можете использовать приложенную ссылку для перехода на веб-сайт. Вы также можете обратиться к веб-сайту ВОЗ. Веб-страница 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

Также ознакомьтесь с моими другими блогами:

Вы также можете связаться со мной в Twitter

Я надеюсь, что это помогло вам понять, как парсить данные о коронавирусе в Excel.

Если у вас есть какие-либо вопросы или предложения, не стесняйтесь обращаться ко мне в разделе комментариев ниже.

Ресурсы: