Come ho combinato il web scraping, la scienza agricola e l'API della NOAA per creare uno strumento che ottimizza i costi di alimentazione del bestiame in base ai dati ambientali Il ranching è un'attività di margini sottili al rasoio.Due delle più grandi variabili che possono fare o rompere un anno sono il costo del mangime di gran lunga la più grande spesa operativae il tempo.Una brusca ondata di calore può influenzare drasticamente la salute e la produttività di un gregge. Come sviluppatore con un background in agricoltura, ho visto l'opportunità di collegare questi due domini.Che cosa succede se potessi costruire uno strumento che non solo trovi il feed più redditizio, ma comincia anche a mettere le basi per adeguare le raccomandazioni in base ai dati ambientali del mondo reale? Quindi, ho costruito un prototipo. È una raccolta di script Python che funziona come un assistente basato sui dati per un rancher. Ha due moduli di base: un Ottimizzare i costi di alimentazione e per estrarre dati meteorologici critici. ecco come funziona. Economic Engine Environmental Monitor Modulo 1: Il motore economico - Scraping per i risparmi Il primo compito era quello di rispondere a una domanda fondamentale: "Dati i bisogni nutrizionali del mio gregge, qual è il modo più economico per nutrirlo?" Ciò richiedeva due parti: una calcolatrice scientifica e un raschiatore web. Parte A: Tradurre la scienza agricola in Python In primo luogo, avevo bisogno di calcolare il "Dry Matter Intake" (DMI) - una misura scientifica di quanto cibo una mucca ha bisogno. Questo non è un numero semplice; dipende dal peso della mucca, dalla fase di vita (allattamento, crescita, gravidanza), dalla produzione di latte e altro ancora. cows_2.py - A Glimpse into the DMI Formulas # Formula for lactating cow DMI, based on scientific papers dmi_lac = ((3.7 + int(lac_par) * 5.7) + .305 * 624 + .022 * int(lac_weght) + \ (-.689 - 1.87 * int(lac_par)) * 3) * \ (1 - (2.12 + int(lac_par) * .136)**(-.053*int(lac_day))) # Total feed needed is the DMI multiplied by the number of cows and days all_feed_needed = (dmi_lac_needed + dmi_grow_needed + final_preg) * int(days_of_feed) Questo script chiede all'utente i dettagli sul loro gregge e calcola i chili totali di mangime necessari. Poi, avevo bisogno del . La richiesta fornitura Parte B: Il Web Scraper per i prezzi in tempo reale L'unico modo per ottenere i dati attuali è andare alla fonte. ho scritto un web scraper utilizzando richieste e BeautifulSoup per tirare i nomi dei prodotti e i prezzi direttamente dal sito web di un negozio di cibo locale. cow_save_scrape.py - The Scraper Logic import requests from bs4 import BeautifulSoup as soup from urllib.request import Request, urlopen websiteurl = 'https://shop.berendbros.com/departments/calf-|70|P35|P351.html' req = Request(websiteurl, headers={"User-Agent": 'Mozilla/5.0'}) webpage = urlopen(req).read() soups = soup(webpage,'html.parser') calf_name = [] calf_price = [] for link in soups.find_all('div', class_='card-body'): for product in link.find_all('div', class_='product_link'): calf_name.append(product.text) for price in link.find_all('div', class_='product_price'): # Clean the price string (e.g., "$24.99\n" -> 24.99) price_text = price.text.strip().strip('$') calf_price.append(float(price_text)) Lo script calcola il costo totale per soddisfare il DMI del gregge per ogni prodotto di mangime e quindi ordina l'elenco per trovare le opzioni più economiche e costose. Modulo 2: Il monitoraggio ambientale - Introduzione all'API NOAA Il costo del mangime è solo la metà dell'equazione. lo stress ambientale, in particolare il calore, ha un impatto enorme sul bestiame. Una mucca che soffre di stress termico mangia meno, produce meno latte e ha una fertilità inferiore. Per quantificare questo, avevo bisogno di dati. mi sono rivolto alla National Oceanic and Atmospheric Administration (NOAA), che offre una fantastica API gratuita per i dati meteorologici storici e attuali da migliaia di stazioni. Il mio script, weather_1.py, è progettato per tirare i punti dati chiave per un elenco di stazioni meteorologiche specifiche nella mia zona di interesse (College Station, TX). weather_1.py - Fetching Key Climate Data import requests import json token = 'YOUR_NOAA_API_TOKEN' # Get this from the NOAA website base_url = 'https://www.ncei.noaa.gov/cdo-web/api/v2/data' start_date = '2024-04-01' end_date = '2024-04-03' # List of data types we want to fetch data_types = [ 'TMAX', # Maximum Temperature 'TMIN', # Minimum Temperature 'RH_AVG', # Average Relative Humidity 'WIND_SPEED_AVG', ] for station_id in us1tx_codes: print(f"--- Processing station: {station_id} ---") params = { 'datasetid': 'USCRNS', # A specific, high-quality dataset 'stationid': f'USCRNS:{station_id}', 'startdate': start_date, 'enddate': end_date, 'limit': 1000, 'datatypeid': data_types } # ... make the requests.get() call ... Lo script consulta sistematicamente l'API per ciascuna stazione e salva i risultati in file JSON, creando un database locale delle condizioni ambientali recenti. Il passo successivo: collegare i punti Attualmente, questi due moduli sono separati.Ma il potere sta nel collegarli.La prossima evoluzione di questo progetto è quella di utilizzare i dati meteorologici come input dinamico per il calcolatore DMI. Puoi calcolare il Dai dati della NOAA – una metrica standard per misurare lo stress termico nei bovini. man mano che il THI sale al di sopra di una certa soglia (circa 72 per le mucche da latte), il DMI inizia a diminuire. Temperature-Humidity Index (THI) La prossima versione della formula DMI sembrerebbe una cosa del genere: adjusted_dmi = calcolato_dmi * get_heat_stress_factor(THI) Questo permetterebbe allo strumento di fare raccomandazioni più intelligenti e più realistiche. ad esempio, potrebbe consigliare a un rancher che durante un'ondata di calore previsto, l'assunzione del loro gregge diminuirà probabilmente del 10%, consentendo loro di regolare gli acquisti di mangimi ed evitare rifiuti. Quello che ho imparato Le API pubbliche sono Goldmines: le agenzie governative come NOAA forniscono una quantità incredibile di dati gratuiti di alta qualità. Il web scraping è un superpotere: per i dati economici che non sono disponibili tramite un'API, uno script Python semplice può trasformare un sito web in una fonte di dati strutturata. La magia è nella combinazione: uno qualsiasi di questi script è utile da solo, ma combinando i dati economici (prezzi degli alimenti) con i dati ambientali (tempo), si crea uno strumento che è molto più potente e più vicino a come funziona il mondo reale. Questo progetto è un punto di partenza, ma dimostra l'enorme potenziale per gli sviluppatori di costruire strumenti che portano la scienza dei dati e l'automazione alle industrie tradizionali, creando valore reale e risolvendo problemi tangibili.