Создание интерактивного скребка данных о погоде в Google Colab: Кодовое руководство по извлечению, отображению и загрузке

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

!pip install beautifulsoup4 ipywidgets pandas

Во -первых, мы устанавливаем три основные библиотеки: BeautifulSoup4 для анализа HTML -контента, ipywidgets для создания интерактивных элементов и пандов для манипулирования и анализа данных. Запуск его в ноутбуке Colab гарантирует, что ваша среда будет полностью подготовлена ​​для проекта Web Scraping.

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

Мы импортируем все необходимые библиотеки для создания интерактивного проекта по скребке в Колабе. Он включает в себя запросы на обработку HTTP -запросов, BeautifulSoup от BS4 для анализа HTML и CSV для управления операциями файлов CSV. Кроме того, он приносит файлы из google.colab для загрузки файлов, ipywidgets и инструментов отображения ipython для создания интерактивного пользовательского интерфейса и пандов для манипулирования и отображения данных.

def scrape_weather():
    """
    Scrapes weather forecast data for San Francisco from the National Weather Service.
    Returns a list of dictionaries containing the period, short description, and temperature.
    """
    url="https://forecast.weather.gov/MapClick.php?lat=37.7772&lon=-122.4168"
    print("Scraping weather data from:", url)
    response = requests.get(url)
   
    if response.status_code != 200:
        print("Error fetching page:", url)
        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
        })
   
    print(f"Scraped {len(weather_data)} forecast entries.")
    return weather_data

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

def save_to_csv(data, filename="weather.csv"):
    """
    Saves the provided data (a list of dictionaries) to a CSV file.
    """
    with open(filename, "w", newline="", encoding='utf-8') as f:
        writer = csv.DictWriter(f, fieldnames=("period", "short_desc", "temp"))
        writer.writeheader()
        writer.writerows(data)
    print(f"Data saved to {filename}")
    return filename

Теперь эта функция берет данные о сокраренной погоде из списка словарей и записывает их в файл CSV с использованием модуля CSV Python. Он открывает файл в режиме записи с помощью кодирования UTF-8, инициализирует диктатер с предопределенными именами FieldNames («период», «short_desc» и «Temp»), записывает строку заголовка, а затем записывает все ряды данных.

out = widgets.Output()


def on_button_click(b):
    """
    Callback function that gets executed when the "Scrape Weather Data" button is clicked.
    It scrapes the weather data, saves it to CSV, displays the data in a table,
    and shows a download link for the CSV file.
    """
    with out:
        clear_output()
        print("Starting weather data scrape...")
        data = scrape_weather()
        if data is None:
            print("Failed to scrape weather data.")
            return
       
        csv_filename = save_to_csv(data)
       
        df = pd.DataFrame(data)
        print("\nWeather Forecast Data:")
        display(df)
       
        print("\nDownload CSV file:")
        display(FileLink(csv_filename))


button = widgets.Button(description="Scrape Weather Data", button_style="success")
button.on_click(on_button_click)


display(button, out)

Наконец, последний фрагмент устанавливает интерактивный пользовательский интерфейс в Colab, используя ipywidgets, который, когда запускается, очищает данные о погоде, отображает его в таблице и предоставляет ссылку на загрузку CSV. Эффективно объединяет веб -соскабливание и взаимодействие с пользователем в компактной настройке ноутбуков.

Выходной образец

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


Вот Колаб ноутбук Для вышеуказанного проекта. Кроме того, не забудьте следовать за нами Twitter и присоединиться к нашему Телеграмма канал и LinkedIn GrукПолем Не забудьте присоединиться к нашему 80K+ ML SubredditПолем

🚨 Рекомендуемое чтение AI Research выпускает Nexus: расширенная система интеграции системы ИИ и стандартов соответствия данными для решения юридических проблем в наборах данных AI


ASIF Razzaq является генеральным директором Marktechpost Media Inc. как дальновидного предпринимателя и инженера, ASIF стремится использовать потенциал искусственного интеллекта для социального блага. Его последнее усилие-запуск медиа-платформы искусственного интеллекта, Marktechpost, которая выделяется благодаря глубокому освещению машинного обучения и новостей о глубоком обучении, которое является технически обоснованным и легко понятным для широкой аудитории. Платформа может похвастаться более чем 2 миллионами ежемесячных просмотров, иллюстрируя свою популярность среди зрителей.

🚨 Рекомендуемая платформа искусственного интеллекта с открытым исходным кодом: «Intellagent-это многоагентная структура с открытым исходным кодом для оценки сложной разговорной системы ИИ» (PROMOTED)

Source link

You might also enjoy

Subscribe Our Newsletter

Scroll to Top