CoderCastrov logo
CoderCastrov
Парсер

Парсинг исторических погодных данных с Darksky

Парсинг исторических погодных данных с Darksky
просмотров
2 мин чтение
#Парсер

Я работал над визуализацией данных о COVID-19 и собрал информацию о районах Индии. Я решил использовать тот же CSV-файл, чтобы извлечь информацию о погоде из всех районов Индии. Я использовал BeautifulSoup для парсинга данных с веб-сайта Darksky.

Используемые библиотеки: BeautifulSoup (инструмент для парсинга), urllib (получение данных из сети), pandas (чтение CSV-файла), csv (запись в файлы), time (ожидание загрузки страницы)

Файл Districtwise_India.csv уже содержит столбцы - широту, долготу, название района и другие поля. Ниже приведен код для чтения данных из файла Districtwise_India.csv и получения широты, долготы районов.

Предположим, что я ввожу "Колар" в форму поиска на веб-сайте darksy и нажимаю "Enter", широта, долгота и дата для Колара будут сформированы в URL, как показано ниже: https://darksky.net/details/13.137,78.134/2018-04-11/us12/en

Мы можем преобразовать URL, чтобы перебрать все широты и долготы районов: quote_page = "https://darksky.net/details/" + lat + ',' + lon + '/' + str(d) + "/us12/en"

Мне нужны определенные погодные компоненты - precipProbability, rain, temperature, wind, pressure, humidity, dew_point. Чтобы проинспектировать элемент в Chrome, щелкните правой кнопкой мыши на элементе, который вы хотите проинспектировать, и выберите Inspect.

Что такое Beautiful Soup?

Beautiful Soup - это библиотека, которая упрощает извлечение данных с веб-сайтов. Она является одним из пакетов, используемых для парсинга веб-страниц. Для выполнения парсинга веб-страниц нам также понадобится [urllib.request](https://docs.python.org/3/library/urllib.request.html#module-urllib.request), чтобы подключиться к веб-странице. Вы можете установить его отсюда here. Я буду использовать BeautifulSoup для разбора всей страницы и извлечения компонентов данных о погоде. Beautiful Soup предоставляет специальный аргумент под названием attrs, который вы можете использовать. attrs - это словарь, который работает так же, как ключевое слово. Вот пример использования:

аргументы: soup.findAll(attrs={‘id’ : re.compile(“para$”)})
# [<p id=”firstpara” align=”center”>This is paragraph <b>one</b>.</p>,
# <p id=”secondpara” align=”blah”>This is paragraph <b>two</b>.</p>]

Некоторые компоненты, чтобы показать, как я извлек данные:

После парсинга я создал список для хранения всех значений. Чтобы получить текст без HTML-тегов, мы просто используем .text. Затем weather_components добавляется в пустой список (hist_data).

Чтобы получить все элементы в списке weather_components, я использовал цикл, чтобы получить значения всех элементов. Пустые значения заменяются текстом "No data found".

Один из созданных CSV-файлов называется "Guntur.csv", где Guntur - это название района. Он выглядит следующим образом с указанными датами и компонентами погоды.

Вот полный код статьи:-

Вот скрипт в действии:-

Я надеюсь, вам понравился краткий, но точный парсинг данных. Существуют разные способы и методы парсинга данных, разные библиотеки и форматы для хранения данных. Так что продолжайте пробовать и реализовывать разные способы.