Wie ich Web-Scraping, Agrarwissenschaft und die NOAA-API kombinierte, um ein Tool zu erstellen, das die Futtermittelkosten auf der Grundlage von Umweltdaten optimiert Ranching ist ein Geschäft mit rasierend dünnen Margen. Zwei der größten Variablen, die ein Jahr machen oder brechen können, sind die Futterkosten bei weitem die größten Betriebskostenund das Wetter. Wie wäre es, wenn ich ein Tool bauen könnte, das nicht nur das kostengünstigste Futter findet, sondern auch beginnt, die Grundlage für die Anpassung von Empfehlungen auf der Grundlage von Umweltdaten in der realen Welt zu legen? Also, ich baute einen Prototyp. Es ist eine Sammlung von Python-Skripts, die als datengesteuerter Assistent für einen Rancher funktioniert. Es hat zwei Kernmodule: eine Optimierung der Futtermittelkosten und eine um kritische Wetterdaten zu ziehen. hier ist, wie es funktioniert. Economic Engine Environmental Monitor Modul 1: Der Wirtschaftsmotor - Scraping for Savings Die erste Aufgabe bestand darin, eine grundlegende Frage zu beantworten: "Angesichts der Nährstoffbedürfnisse meiner Herde, was ist der billigste Weg, sie zu füttern?" Dazu waren zwei Teile erforderlich: ein wissenschaftlicher Rechner und ein Web-Scraper. Teil A: Agrarwissenschaft in Python übersetzen Zuerst musste ich die "Dry Matter Intake" (DMI) berechnen – ein wissenschaftlicher Maßstab dafür, wie viel Nahrung eine Kuh braucht. Dies ist keine einfache Zahl; es hängt vom Gewicht der Kuh, dem Lebensstadium (Laktation, Wachstum, Schwangerschaft), der Milchproduktion und mehr ab. 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) Dieses Skript fragt den Benutzer nach Details über ihre Herde und berechnet die Gesamtpfund der benötigten Futter. Danach brauchte ich die . Nachfrage Versorgung Teil B: Der Web-Scraper für Echtzeitpreise Ich schrieb einen Web-Scraper mit Anfragen und BeautifulSoup, um Produktnamen und Preise direkt von der Website eines lokalen Futtergeschäfts zu ziehen. 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)) Das Skript berechnet die Gesamtkosten, um den DMI der Herde für jedes Futtermittel zu erfüllen, und sortiert dann die Liste, um die billigsten und teuersten Optionen zu finden. Modul 2: Der Umweltmonitor - Tapping in die NOAA API Futterkosten sind nur die Hälfte der Gleichung.Umweltbelastung, vor allem Wärme, hat einen massiven Einfluss auf Vieh. Eine Kuh, die unter Wärmestress leidet, wird weniger essen, weniger Milch produzieren und eine geringere Fruchtbarkeit haben. Ich wandte mich an die National Oceanic and Atmospheric Administration (NOAA), die eine fantastische, kostenlose API für historische und aktuelle Wetterdaten von Tausenden von Stationen anbietet. Mein Skript, weather_1.py, ist entworfen, um wichtige Datenpunkte für eine Liste bestimmter Wetterstationen in meinem Bereich von Interesse (College Station, TX) zu ziehen. 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 ... Das Skript befragt systematisch die API für jede Station und speichert die Ergebnisse in JSON-Dateien, um eine lokale Datenbank der jüngsten Umweltbedingungen zu erstellen. Der nächste Schritt: Die Dots verbinden Derzeit sind diese beiden Module getrennt, aber die Kraft liegt darin, sie miteinander zu verbinden.Die nächste Entwicklung dieses Projekts besteht darin, die Wetterdaten als dynamische Eingabe für den DMI-Kalkulator zu verwenden. Sie können die Berechnung der aus den NOAA-Daten – eine Standardmetrik für die Messung von Wärmestress bei Rindern.Da der THI über einer bestimmten Schwelle steigt (um 72 für Milchkühe), beginnt der DMI zu sinken. Temperature-Humidity Index (THI) Die nächste Version der DMI-Formel würde so aussehen: adjusted_dmi = berechnet_dmi * get_heat_stress_factor(THI) Dies würde es dem Tool ermöglichen, intelligentere, realistischere Empfehlungen zu machen. Zum Beispiel könnte es einem Rancher raten, dass während einer vorhergesagten Hitzewelle die Aufnahme ihrer Herde wahrscheinlich um 10% sinken wird, was ihnen erlaubt, Futterkäufe anzupassen und Abfall zu vermeiden. Was ich gelernt habe Öffentliche APIs sind Goldmine: Regierungsbehörden wie NOAA bieten eine unglaubliche Menge an qualitativ hochwertigen, kostenlosen Daten. Web-Scraping ist eine Supermacht: Für wirtschaftliche Daten, die nicht über eine API verfügbar sind, kann ein einfaches Python-Script eine Website in eine strukturierte Datenquelle verwandeln. Aber durch die Kombination der wirtschaftlichen Daten (Feed-Preise) mit den Umweltdaten (Wetter), erstellen Sie ein Werkzeug, das viel leistungsfähiger und näher an, wie die reale Welt tatsächlich funktioniert. Dieses Projekt ist ein Ausgangspunkt, aber es zeigt das enorme Potenzial für Entwickler, Werkzeuge zu bauen, die Datenwissenschaft und Automatisierung in traditionelle Branchen bringen, echte Werte schaffen und greifbare Probleme lösen.