def main(start_date,end_date,area,crop): api_url=au.crop_weather_url(start_date,end_date,area,crop) soup=cn.getSoup(api_url+"1") dp=DataProcess() totalcount=int(soup.find("totalcount").text) numofrows=int(soup.find("numofrows").text) pageMaxNum=math.ceil(totalcount/numofrows) data=[] year={} for itr in range(pageMaxNum): soup=cn.getSoup(api_url+str(itr+1)) #item 안의 모든 자식을 해당 자식의 name:text 형태로 딕셔러니를 만든다 #item 한개당 한개의 자식 딕셔너리 리스트를 원소로하는 리스트를 만들고 #모든 item리스를 모아 data에저장한다. #data=[ {ele.name:ele.text.split(" ")[0]} for item in soup.find_all("item") for ele in item ] for item in soup.find_all("item"): row={} for ele in item: row.update({ele.name:ele.text.split(" ")[0]}) if row.get("ym") not in year: year.update({row.get("ym"):1}) data.append(row) if len(data)!=0: dp.setDataList(data) else: print("no data to fetch!") if area=="천안": area="cheonan" else: area="naju" if crop=="배": crop="pear" file_name=dp.writeToCsv("processed_data/weather_data/"+area+"/AREA-"+area+"CROP-"+crop+"FROM-"+start_date+"END-"+end_date+"CREATED-")
def main(start_date, end_date): api_url = au.weather_point_url(start_date, end_date) dp = DataProcess() data = [] delta = date(int(end_date[:4]), int(end_date[4:6]), int( end_date[6:8])) - date(int(start_date[:4]), int(start_date[4:6]), int(start_date[6:8])) for itr in range(math.ceil(delta.days / 10)): soup = cn.getSoup(api_url + str(itr + 1)) #item 안의 모든 자식을 해당 자식의 name:text 형태로 딕셔러니를 만든다 #item 한개당 한개의 자식 딕셔너리 리스트를 원소로하는 리스트를 만들고 #모든 item리스를 모아 data에저장한다. #data=[ {ele.name:ele.text.split(" ")[0]} for item in soup.find_all("item") for ele in item ] if isinstance(soup, BeautifulSoup): for item in soup.find_all("info"): row = {} for ele in item: if isinstance(ele, Tag): row.update({ele.name: ele.string.split(" ")[0]}) data.append(row) if len(data) != 0: dp.setDataList(data) else: print("no data to fetch!") dp.writeToCsv("천안 종관기상FROM=" + start_date + "END=" + end_date + " ")
def main(): api_url = au.farm_area() soup = cn.getSoup(api_url + "1") dp = DataProcess() data = [] pagenum = 0 for pagenum in range(601): pagenum += 1 soup = cn.getSoup(api_url + str(pagenum)) for item in soup.find_all("model"): row = {} for ele in item: row.update({ele.name: ele.text.split(" ")[0]}) data.append(row) if len(data) != 0: dp.setDataList(data) else: print("no data to fetch!") dp.writeToCsv()
def main(end_year, period): api_url = au.crop_price_url(end_year, period, 1, 1) soup = cn.getSoup(api_url) dp = DataProcess() data = [] #item 안의 모든 자식을 해당 자식의 name:text 형태로 딕셔러니를 만든다 #item 한개당 한개의 자식 딕셔너리 리스트를 원소로하는 리스트를 만들고 #모든 item리스를 모아 data에저장한다. for item in soup.find_all("item"): row = {} for ele in item: row.update({ele.name: ele.string.split(" ")[0].replace(",", "")}) data.append(row) if len(data) != 0: dp.setDataList(data) else: print("no data to fetch!") # data process 하는곳 df = pd.DataFrame(data) df = (df[1:df.shape[0] // 2]) df = df.drop([None, 'regday', 'yearavg'], axis=1) year_list = list(df['yyyy']) print(year_list) df = df.set_index('yyyy').T df = [float(x) for t in range(len(df)) for x in df.iloc[t]] y_m = [ str(y) + str(m).zfill(2) for y in range(int(year_list[0]), int(year_list[-1]) + 1) for m in range(1, 13) ] df = pd.DataFrame(df, index=y_m) df.columns = ["all_area"] df.to_csv( "/home/hadoop/data/processed_data/price_data/processed_pear_price" + str(datetime.datetime.now()).split(".")[0].replace(":", "-").replace( " ", "") + ".csv", float_format='%.f')
from bs4 import BeautifulSoup import math import pandas as pd import glob import datetime path = "/home/hadoop/data/processed_data/water_data/" if (len(sys.argv) != 2): print("연도를 쓰시오") sys.exit() year = sys.argv[1] #지역정보를 가져옴 api_url = au.crop_kwater_url(1) soup = cn.getSoup(api_url) dp = DataProcess() sido = [] for item in soup.find_all("sido"): sido.append(item.text) sido = ['충남', '전남'] #지반종류 가져옴 api_url = au.crop_kwater_url(2) soup = cn.getSoup(api_url) wellnum = [] for item in soup.find_all("code"): wellnum.append(item.text) #년도 정보를 가져옴 #api_url=au.crop_kwater_url(4)