Kako sam kombinirao web skraping, poljoprivrednu znanost i NOAA API za stvaranje alata koji optimizira troškove hrane za stoku na temelju podataka o okolišu Dvije od najvećih varijabilnosti koje mogu napraviti ili razbiti godinu su trošak hrane za životinje, daleko najveći operativni trošak i vrijeme. Kao programer s pozadinom u poljoprivredi, vidio sam priliku povezati ova dva domena.Što ako bih mogao izgraditi alat koji ne samo da pronađe najučinkovitiju hranu za životinje, već također počinje postavljati temelje za prilagodbu preporuka na temelju realnih podataka o okolišu? Dakle, izgradio sam prototip. To je zbirka Python skripta koji djeluje kao pomoćnik na temelju podataka za rančera. optimizirati troškove hrane i Da biste izvukli kritične vremenske podatke, evo kako to radi. Economic Engine Environmental Monitor Modul 1: Gospodarski motor - Scraping za uštede Prvi zadatak bio je odgovoriti na temeljno pitanje: "Uzimajući u obzir prehrambene potrebe moje stoke, koji je najjeftiniji način da ih hranim?" To je zahtijevalo dva dijela: znanstveni kalkulator i web skraper. Dio A: Prevođenje poljoprivredne znanosti u Python Prvo, morala sam izračunati "Dry Matter Intake" (DMI) - znanstvena mjera koliko hrane krava treba.To nije jednostavan broj; to ovisi o težini krave, životnoj fazi (dojenje, rast, trudnoća), proizvodnji mlijeka i još mnogo toga. 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) Ovaj scenarij traži od korisnika detalje o njihovoj stadi i izračunava ukupne kilograme hrane potrebne. Sljedeći članakPotrebno mi je . Potražnja opskrba Dio B: Web Scraper za cijene u stvarnom vremenu Jedini način za dobivanje trenutnih podataka je otići do izvora. Napisao sam web skraper koristeći zahtjeve i BeautifulSoup da izvlači imena proizvoda i cijene izravno s web stranice lokalne trgovine hranom. 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)) Scenarij izračunava ukupne troškove za zadovoljavanje DMI stada za svaki proizvod za hranu, a zatim sortira popis kako bi pronašao najjeftinije i najskuplje opcije. Modul 2: Monitor okoliša - Uključivanje u NOAA API Trošak hrane za životinje je samo polovica jednadžbe. ekološki stres, posebno toplina, ima ogroman utjecaj na stoku. krava koja pati od toplinskog stresa će jesti manje, proizvoditi manje mlijeka i imati nižu plodnost. Obratio sam se Nacionalnoj upravi za oceane i atmosferu (NOAA), koja nudi fantastičan, besplatan API za povijesne i trenutne vremenske podatke iz tisuća stanica. Moj scenarij, weather_1.py, dizajniran je za povlačenje ključnih točaka podataka za popis određenih meteoroloških stanica u mom području interesa (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 ... Script sustavno postavlja upite u API za svaku stanicu i pohranjuje rezultate u JSON datoteke, stvarajući lokalnu bazu podataka o nedavnim uvjetima okoliša. Sljedeći korak: povezivanje točaka Trenutno su ova dva modula odvojena, ali snaga leži u njihovom povezivanju.Sljedeća evolucija ovog projekta je korištenje vremenskih podataka kao dinamičkog ulaza za DMI kalkulator. Možete izračunati Kako THI raste iznad određenog praga (oko 72 za kravlje mlijeko), DMI počinje padati. Temperature-Humidity Index (THI) Sljedeća verzija DMI formule izgledala bi nešto ovako: adjusted_dmi = izračunano_dmi * get_heat_stress_factor(THI) Na primjer, to bi moglo savjetovati rančera da će tijekom predviđenog toplinskog vala unos stada vjerojatno smanjiti za 10%, što im omogućuje da prilagode kupnju hrane i izbjegavaju otpad. Što sam naučio Javni API-ji su Goldmines: vladine agencije poput NOAA-e pružaju nevjerojatnu količinu visokokvalitetnih, besplatnih podataka. Web skraping je supermoć: za ekonomske podatke koji nisu dostupni putem API-ja, jednostavan Python skript može pretvoriti web stranicu u strukturirani izvor podataka. Magija je u kombinaciji: bilo koji od ovih skripta je koristan sam po sebi. ali kombiniranjem ekonomskih podataka (cjene hrane) s podacima o okolišu (vrijeme), stvorite alat koji je mnogo moćniji i bliži načinu na koji stvarni svijet zapravo funkcionira. Ovaj projekt je polazna točka, ali pokazuje ogroman potencijal za programere da grade alate koji donose znanost o podacima i automatizaciju u tradicionalne industrije, stvarajući stvarnu vrijednost i rješavajući opipljive probleme.