Како сам комбиновао веб скрапинг, пољопривредну науку и НОАА АПИ да бих створио алат који оптимизује трошкове хране за стоку на основу података о животној средини Ранцхинг је посао са танким маргинама.Две од највећих варијабли које могу направити или сломити годину су трошкови хране далеко највећи оперативни трошковии време. Као програмер са позадином у пољопривреди, видео сам прилику да повежем ова два домена.Шта ако бих могао да изградим алат који не само да проналази најефикаснију храну, већ и почиње да поставља темеље за прилагођавање препорука на основу реалних података о животној средини? Дакле, изградио сам прототип. То је збирка Питон скрипта који функционише као асистент заснован на подацима за ранчер. Има два основна модула: један Optimizacija troškova hrane i да извучете критичне временске податке. Ево како то функционише. Economic Engine Environmental Monitor Модул 1: Економски мотор - гребање за уштеду Први задатак је био да одговори на фундаментално питање: "Узимајући у обзир нутритивне потребе мог стада, који је најјефтинији начин да их нахраним?" Ово је захтевало два дела: научни калкулатор и веб гребач. Део А: Превод пољопривредне науке у Питон Прво, морао сам да израчунам "Уношење суве материје" (ДМИ) - научну меру колико хране крава треба. Ово није једноставан број; то зависи од тежине краве, стадијума живота (лактација, раст, трудноћа), производње млека и још много тога. 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) Овај скрипт тражи од корисника детаље о њиховом стаду и израчунава укупне килограме потребне хране. Следеће, потребан ми је . Потражња снабдевање Део Б: Веб Сцрапер за цене у реалном времену Једини начин да добијете тренутне податке је да одете до извора. Написао сам веб скрепер користећи захтеве и БеаутифулСоуп да извучем имена производа и цене директно са веб странице локалне продавнице хране. 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)) Скрипт израчунава укупне трошкове како би задовољио ДМИ стада за сваки производ за храну, а затим сортира листу како би пронашао најјефтиније и најскупље опције. Модул 2: Еколошки мониторинг - узимање у NOAA API Трошкови хране је само половина једначине. стрес животне средине, посебно топлоте, има масиван утицај на стоку. крава која пати од топлотног стреса ће јести мање, производити мање млека и имати нижу плодност. Окренуо сам се Националној океанској и атмосферској управи (НОАА), која нуди фантастичан, бесплатан АПИ за историјске и тренутне временске податке из хиљада станица. Мој сценарио, weather_1.py, је дизајниран да извуче кључне тачке података за листу одређених метеоролошких станица у мом подручју интереса (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 ... Скрипт систематски упитује АПИ за сваку станицу и чува резултате у ЈСОН датотеке, стварајући локалну базу података о најновијим условима животне средине. Следећи корак: повезивање тачака Тренутно су ова два модула одвојена.Али моћ лежи у њиховом повезивању.Следећа еволуција овог пројекта је да се временски подаци користе као динамички улаз за ДМИ калкулатор. Možete da izračunate од података НОАА – стандардна метрика за мерење топлотног стреса код стоке. Како ТХИ расте изнад одређеног прага (око 72 за краве млечне), ДМИ почиње да пада. Temperature-Humidity Index (THI) Sledeća verzija DMI formule bi izgledala ovako: adjusted_dmi = calculated_dmi * get_heat_stress_factor(THI) Ово би омогућило алату да направи паметније, реалистичније препоруке.На пример, могло би саветовати фармеру да ће се током предвиђеног топлотног таласа унос њихове стада вероватно смањити за 10%, што им омогућава да прилагоде куповину хране и избегну отпад. Šta sam naučio Јавне АПИ су Златни рудници: владине агенције као што је НОАА пружају невероватну количину висококвалитетних, бесплатних података. Веб скрапинг је суперсила: За економске податке који нису доступни преко АПИ-ја, једноставан Питон скрипт може претворити веб страницу у структурирани извор података. Магија је у комбинацији: било који од ових сценарија је користан сам по себи.Али комбиновањем економских података (цене хране) са подацима о животној средини (погода), стварате алат који је много моћнији и ближи томе како стварни свет заправо функционише. Овај пројекат је почетна тачка, али демонстрира огромни потенцијал за програмере да изграде алате који доносе науку о подацима и аутоматизацију у традиционалне индустрије, стварајући стварну вредност и решавајући опипљиве проблеме.