В этом уроке мы создадим интерактивный проект по скрепингу в 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)