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

Случаи коронавируса стремительно растут во всем мире. Из этого туториала Вы узнаете, как очистить данные о коронавирусе в Интернете и преобразовать их в Ms-excel.

О чем будет рассказано в этом блоге

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

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

- python
- Beautiful soup
- pandas
- HTML
- CSS

Что такое Web Scrapping?

Вступление

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

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

Здесь следует учитывать два важных момента:

  1. Всегда проявляйте уважение и пытайтесь получить разрешение на очистку, не забрасывайте веб-сайт запросами на очистку,
    в противном случае ваш IP-адрес может быть заблокирован!
  2. Имейте в виду, что веб-сайты часто меняются, а это означает, что ваш код со дня на день может стать полностью сломанным.

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

  1. Запрос ответа с веб-страницы
  2. Разобрать и извлечь с помощью Beautiful soup и lxml
  3. Загрузите и экспортируйте данные с помощью pandas в Excel

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

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

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

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

Я не думаю, что Коронавирус нуждается в представлении, но на всякий случай, если кто-то не знает, коронавирусная болезнь (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> для столбцов таблицы.

Запросы

  • Используйте библиотеку запросов, чтобы захватить страницу.
  • Это может не сработать, если у вас есть брандмауэр, блокирующий Python / Jupyter.
  • Иногда вам нужно запустить это дважды, если это не удается с первого раза.
import requests
#make requests from webpage
result = requests.get('https://www.worldometers.info/coronavirus/country/india/')
print(result.text)

Библиотека запросов, которую мы загрузили, идет и получает ответ, чтобы получить запрос с веб-страницы, мы используем метод requests.get(website URL).

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

Но код не будет структурирован.

Красивый суп

В библиотеке BeautifulSoup уже есть множество встроенных инструментов и методов для извлечения информации из строки такого рода (в основном из файла HTML).
Это библиотека Python для извлечения данных из файлов HTML и XML.

Используя BeautifulSoup, мы можем создать объект «суп», содержащий все «ингредиенты» веб-страницы.

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

import bs4
soup = bs4.BeautifulSoup(result.text,'lxml')
print(soup)

А теперь импортируйте B.S. следующим шагом будет создание переменной soup. И мы собираемся передать здесь две вещи: result.text строку и lxml как строку.

Lxml просматривает этот HTML-документ, а затем выясняет, что такое класс CSS, что такое CSS I.D. , Какие есть различные элементы HTML, теги и т. Д.

Извлечение данных

Найдите div
Чтобы найти элемент, вам нужно щелкнуть правой кнопкой мыши и нажать "Проверить количество случаев". См. Прилагаемый снимок ниже.

нам нужно найти правильный класс. class_= 'maincounter-number' служит нашей цели. См. Прилагаемый снимок ниже.

Объект Beautiful Soup был создан в нашем скрипте Python, а HTML-данные веб-сайта были удалены со страницы. Далее нам нужно получить интересующие нас данные из HTML-кода.

cases = soup.find_all('div' ,class_= 'maincounter-number')
print(cases)

Есть еще много кода HTML, который нам не нужен. Наши желаемые записи данных заключены в элемент HTML div и внутри class_= 'maincounter-number'. Мы можем использовать эти знания для дальнейшей очистки очищенных данных.

Хранение данных

нам нужно сохранить очищенные данные в какой-либо форме, чтобы их можно было эффективно использовать. Для этого проекта все данные будут сохранены в списке Python. Для этого мы:

data = []
#find the span and get data from it
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({"CoronaData": data})
#naming the coloumns
df.index = ['TotalCases', ' Deaths', 'Recovered']
#file-name
df.to_csv('Corona_Data.csv')

DataFrame - это двумерная помеченная структура данных, потенциально неоднородная табличная структура данных с помеченными осями (строки и столбцы).

df = pd.DataFrame({"CoronaData": data}) используется для создания DataFrame и присвоения ему имени и сопоставления его со списком data, который мы создали ранее.

Затем мы дадим имена столбцам с помощью df.index. Это будет выглядеть примерно так.

Заключительный шаг,
Мы готовы экспортировать данные в Ms-excel. Мы будем использовать df.to_csv для того же

Вот наш результат

ПРИМЕЧАНИЕ: вывод зависит от текущей статистики.

Вы можете найти код в моем репозитории Github.

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

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

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

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

Ресурсы: