Создание интерактивного веб-скрейпера данных о погоде в Google Colab: пошаговое руководство для бизнеса

Создание интерактивного веб-скрепера погоды в Google Colab

В этом руководстве мы создадим проект веб-скрепинга, который будет извлекать данные о прогнозе погоды в реальном времени из Национальной метеорологической службы США. Вы научитесь настраивать свою среду, писать скрипт на Python с использованием BeautifulSoup и requests, а также интегрировать интерактивный интерфейс с помощью ipywidgets.

Установка необходимых библиотек

!pip install beautifulsoup4 ipywidgets pandas

Сначала мы устанавливаем три основные библиотеки: BeautifulSoup4 для парсинга HTML-контента, ipywidgets для создания интерактивных элементов и pandas для манипуляции и анализа данных.

Импорт библиотек

import requests
from bs4 import BeautifulSoup
import csv
from google.colab import files
import ipywidgets as widgets
from IPython.display import display, clear_output, FileLink
import pandas as pd

Импортируем все необходимые библиотеки для создания интерактивного веб-скрепера. Это включает в себя requests для обработки HTTP-запросов, BeautifulSoup для парсинга HTML и csv для работы с CSV-файлами.

Функция для сбора данных о погоде

def scrape_weather():
    url = 'https://forecast.weather.gov/MapClick.php?lat=37.7772&lon=-122.4168'
    response = requests.get(url)
   
    if response.status_code != 200:
        return None
   
    soup = BeautifulSoup(response.text, 'html.parser')
    seven_day = soup.find(id="seven-day-forecast")
    forecast_items = seven_day.find_all(class_="tombstone-container")
   
    weather_data = []
   
    for forecast in forecast_items:
        period = forecast.find(class_="period-name").get_text() if forecast.find(class_="period-name") else ''
        short_desc = forecast.find(class_="short-desc").get_text() if forecast.find(class_="short-desc") else ''
        temp = forecast.find(class_="temp").get_text() if forecast.find(class_="temp") else ''
       
        weather_data.append({
            "period": period,
            "short_desc": short_desc,
            "temp": temp
        })
   
    return weather_data

С помощью этой функции мы получаем прогноз погоды для Сан-Франциско. Функция делает HTTP-запрос к странице прогноза, парсит HTML с помощью BeautifulSoup и извлекает детали прогноза.

Сохранение данных в CSV

def save_to_csv(data, filename="weather.csv"):
    with open(filename, "w", newline='', encoding='utf-8') as f:
        writer = csv.DictWriter(f, fieldnames=["period", "short_desc", "temp"])
        writer.writeheader()
        writer.writerows(data)
    return filename

Эта функция принимает собранные данные о погоде и записывает их в CSV-файл. Она открывает файл в режиме записи с кодировкой UTF-8 и использует DictWriter для записи данных.

Создание интерактивного интерфейса

out = widgets.Output()

def on_button_click(b):
    with out:
        clear_output()
        data = scrape_weather()
        if data is None:
            return
       
        csv_filename = save_to_csv(data)
       
        df = pd.DataFrame(data)
        display(df)
        display(FileLink(csv_filename))

button = widgets.Button(description="Собрать данные о погоде", button_style='success')
button.on_click(on_button_click)

display(button, out)

Этот код создает интерактивный интерфейс в Colab, который, когда его активируют, собирает данные о погоде, отображает их в таблице и предоставляет ссылку для загрузки CSV-файла.

Заключение

В этом руководстве мы продемонстрировали, как объединить веб-скрепинг с интерактивным интерфейсом в Google Colab. Мы создали полный проект, который извлекает данные о погоде в реальном времени, обрабатывает их и отображает результаты в интерактивной таблице.

Если вам нужна помощь в управлении ИИ в бизнесе, свяжитесь с нами по адресу hello@itinai.ru. Подписывайтесь на наш Telegram для получения последних новостей об ИИ.