CoderCastrov logo
CoderCastrov
Анализ данных

_Data Science_👨‍💻_: Парсинг данных с использованием Python_

_Data Science_👨‍💻_: Парсинг данных с использованием Python_
просмотров
4 мин чтение
#Анализ данных

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

Когда что-то достаточно важно, вы делаете это, даже если шансы не в вашу пользу. ~Илон Маск

Введение

Этот блог в основном посвящен базовому парсингу данных с веб-страницы. Наука о данных - это работа с данными. Поэтому одна из самых важных частей науки о данных - это сбор данных. Здесь мы парсим данные с веб-страницы. Существует много способов сбора данных. Для парсинга данных я использовал следующие библиотеки:

(1) Selenium: Chrome Driver

(2) Beautiful Soup: парсинг веб-страниц

(3) Pandas: манипуляция данными

Для этой практики мы парсим данные с Covid 19 India Dashboard Data.

Ссылка: https://www.covid19india.org/ Больше о сборе данных.

Обзор :

Я выполнил эту обработку в три основных шага:

(1) Получение доступа к веб-странице с помощью веб-драйвера Chrome Selenium.

(2) Парсинг данных с помощью Beautiful Soup.

(3) Преобразование данных в таблицу данных pandas и сохранение данных в виде CSV-файла.

Реализация кода:

Для полного кода реализации проверьте ссылку в конце этого блога.

Установка зависимостей:

pip install selenium pandas beautifulsoup4

Импорт зависимостей:

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd

Установка Chrome Driver:

Скачайте Chrome Driver по этой ссылке.

Распакуйте файл и установите его в любом месте, а затем добавьте переменную PATH в переменные среды.

Я добавил путь в System Variables.

Я добавил Chrome Driver в рабочую директорию.

driver = webdriver.Chrome("chromedriver")

Вы должны добавить путь к вашему chromedriver.exe.

Информация о веб-странице:

У нас есть много информации о ситуации с Covid в Индии. Мы получаем таблицу и особенно столбцы о общем количестве случаев Covid, полностью выздоровевших случаев и количестве вакцинированных доз по штатам.

Создайте пустой список для названия штата, общего количества случаев Covid, полностью выздоровевших случаев и количества вакцинированных людей.

states = []
total_covid_cases = []
total_recoverd_cases = []
vaccinated_people = []

Добавьте URL веб-страницы в драйвер, чтобы мы могли получить исходный код конкретной веб-страницы.

driver.get("https://www.covid19india.org/")

Скрапинг данных:

content = driver.page_source
soup = BeautifulSoup(content)

Сначала мы получаем исходный код страницы, а затем создаем объект Beautiful Soup, чтобы мы могли выполнять некоторые операции с ним.

Теперь нам нужно знать, что мы хотим получить, какое имя класса, какой конкретный тег содержит информацию, которую мы хотим. На все эти вопросы мы можем получить ответ, просмотрев веб-страницу. Для этого вам должно быть немного знаний HTML и CSS.

Итак, для наших данных Covid мы скрапим полную таблицу, которая находится между классом «table container». У Soup есть встроенная функция find, которая найдет первое вхождение нашего шаблона.

table = soup.find('div',attrs={'class':'table-container'})

Вышеуказанная строка означает найти тег div на конкретной веб-странице, у которого есть имя класса «table container».

Теперь у нас есть таблица, но мы хотим получить только некоторые столбцы, поэтому нам нужно снова отфильтровать таблицу.

data = []
row_data = []
**for** index , item **in** enumerate(table.find_all('div' , attrs={'class' : 'total'})):
    **if** index%6 == 0 **and** index != 0:
        data.append(row_data)
        row_data = []
    row_data.append(item.text)

Здесь мы сначала получаем все данные из таблицы и создаем список списков. Таким образом, data[0] означает первый столбец таблицы, который доступен на веб-странице covid19 India.

Теперь, получив список списков, мы используем специальный цикл в Python и добавляем значения в пустой список.

**for** d **in** data:
    total_covid_cases.append(d[0])
    total_recoverd_cases.append(d[2])
    vaccinated_people.append(d[-1])

Просто сосредоточьтесь на коде, вы все поймете. Это очень просто...👍

**for** item **in** table.find_all('div',attrs={'class':'state-name'}):
    states.append(item.text)

После этого мы добавляем названия штатов в список штатов. Для названия штата нам нужно получить все теги div с классом «state-name».

Преобразование данных в объект Pandas DataFrame:

data = pd.DataFrame({'Штаты': states,
                     'Всего случаев Covid': total_covid_cases,
                     'Всего выздоровевших': total_recoverd_cases,
                     'Количество вакцинированных': vaccinated_people})

Мы получаем результаты вот так.

Сохранение DataFrame в формате CSV:

data.to_csv('covid-report-statewise.csv')

Используя функцию to_csv, мы можем преобразовать объект DataFrame в файл CSV.

Код:

manthan89-py/Data-Science

Этот репозиторий содержит практические задания по предмету Data Science из нашего университета. - manthan89-py/Data-Science

github.com

Вывод:

Мы можем получить любые данные с веб-страницы, используя библиотеку для парсинга веб-страниц, такую как Beautiful Soup, Scrappy и т. д. После преобразования в объект Pandas мы можем применять все функции Pandas к этим данным.

Более подробно о функциях Pandas можно узнать здесь.

Более подробно о Beautiful Soup можно узнать здесь.

LinkedIn:

Manthan Bhikadiya - CHAROTAR UNIVERSITY OF SCIENCE AND TECHNOLOGY - Сурат, Гуджарат, Индия |...

Просмотреть профиль Manthan Bhikadiya на LinkedIn, крупнейшем в мире сообществе специалистов. У Мантана есть 2 указанных места работы на...

www.linkedin.com

Больше проектов и блогов:

Проекты:

manthan89-py - Обзор

Интересуюсь ИИ, глубоким обучением, машинным обучением, компьютерным зрением, блокчейном и Flutter😇. Занимаюсь некоторыми соревновательными...

github.com

Блоги:

Manthan Bhikadiya 🖋 - Medium

Читайте статьи от Manthan Bhikadiya 🖋 на Medium. Интересуюсь ИИ, глубоким обучением, машинным обучением, компьютерным зрением...

manthan-bhikadiya.medium.com

Заключительное замечание:

Спасибо за чтение! Если вам понравилась эта статья, пожалуйста, нажмите кнопку 👏 как можно больше раз. Это будет означать много для меня и побудит меня продолжать делиться своими знаниями. Если вам нравится мой контент, подпишитесь на меня в Medium, я постараюсь опубликовать как можно больше блогов.