def setJeonbuk_uni2(self): conn = self.mypool.connect() print("start: jeonbuk_university2") for k in range(10): try: url = "https://likehome.jbnu.ac.kr/home/main/inner.php?sMenu=B7200" page = urlopen(url) soup = BeautifulSoup(page, "html.parser") table = soup.find('table') thead = table.find('thead') tbody = table.find('tbody') day = [] breakfast = [] lunch = [] supper = [] num = [] for i in thead.find_all('th'): day.append(i.get_text().strip().replace(" ", "").replace( "\t\t", "")) del day[0] for i in range(7): breakfast.append( tbody.find_all('tr')[0].find_all('td') [i].get_text().replace("\n", "").replace(" ", "<br>")) lunch.append( tbody.find_all('tr')[1].find_all('td') [i].get_text().replace("\n", "").replace(" ", "<br>")) supper.append( tbody.find_all('tr')[2].find_all('td') [i].get_text().replace("\n", "").replace(" ", "<br>")) num.append(i) jeonbuk = University("전북대학교(참빛관)") for i in range(7): carte = Carte(day[i], breakfast[i], lunch[i], supper[i], num[i]) jeonbuk.addCarte(carte) self.addUniversity(jeonbuk, conn) conn.close() break except BaseException as e: print(e) print("retry: jeonbuk_university2(" + str(k) + ')') time.sleep(1) print("finish: jeonbuk_university2")
def setkunsan_uni(self): conn = self.mypool.connect() print('start kunsan_university') for k in range(10): try: url = "http://www.kunsan.ac.kr/dormi/index.kunsan?menuCd=DOM_000000704006000000" page = urlopen(url) soup = BeautifulSoup(page, "html.parser") ctable = soup.find_all('table', 'ctable01')[1] thead = ctable.find('thead') day = thead.find_all('th') del (day[0]) for i in range(0, len(day)): temp = day[i].get_text().split('\n') day[i] = temp[1] + ',' + temp[2] tbody = ctable.find('tbody') breakfast_t = tbody.find_all('tr')[0] lunch_t = tbody.find_all('tr')[1] supper_t = tbody.find_all('tr')[2] breakfast = [] lunch = [] supper = [] for i in breakfast_t.find_all('td'): breakfast.append(i.get_text().strip().replace(' ', '<br>')) for i in lunch_t.find_all('td'): lunch.append(i.get_text().strip().replace(' ', '<br>')) for i in supper_t.find_all('td'): supper.append(i.get_text().strip().replace(' ', '<br>')) kunsan = University('군산대학교') for i in range(7): carte = Carte(day[i], breakfast[i], lunch[i], supper[i], i) kunsan.addCarte(carte) self.addUniversity(kunsan, conn) conn.close() break except BaseException as e: print("error: " + e) print('retry kunsan_university(' + str(k) + ')') time.sleep(1) print('finish kunsan_university')
def db_fill(self, number): from Cursus import Cursus from Campus import Campus from University import University univ = University() univ.cb_fill(number) del univ db.session_try_commit() cursus = Cursus() cursus.cb_fill(number) del cursus db.session_try_commit() campus = Campus() campus.cb_fill(number) del campus db.session_try_commit()
def __init__(self): #initialize objects self.uni = University.University("UVM", 12000, "Burlington, Vermont", 18000, 45000,[]) self.cems = College.College("CEMS", 2000, [],[]) self.cas = College.College("CAS", 3000, [],[]) self.john = Professor.Professor("John Doe", "Votey 401", False, 3.0,[]) self.jane = Professor.Professor("Jane Doe", "Votey 402", True, 2.5,[]) self.sam = Professor.Professor("Sam Doe", "Votey 403", True, 5.0,[]) self.cs127 = Course.Course("CS 127", 3) self.cs424 = Course.Course("CS 424", 18) self.cs319 = Course.Course("CS 319", 3)
def map(self): import User User.init_db() import Campus Campus.init() import Class Class.init() import ClassRoom ClassRoom.init() import Course Course.init() import Cursus Cursus.init() import Event Event.init() import Period Period.init() import Planning Planning.init() import Settings Settings.init() import University University.init()
# -*- coding: utf-8 -*- from University import * """ ====================================================================================== 직업의 키워드와 일치하는 과목 리스트를 만든다. ====================================================================================== """ univ = University() # univ : University 클래스 타입의 data # test code # print(univ.sw_list) # print(univ.sw_list.__len__()) def find_in_sw(keyword): """소프트웨어융합학과 교과목 리스트의 수업 내용에서 "keyword"를 찾으면 학년별 리스트에 저장한다. example) 입력 파라미터 keyword = "프로그래밍" 이라고 하자. sw_list = [["웹\파이선프로그래밍", "웹\파이선프로그래밍에 대해서 배운다.", "1"], ["a","a","a"], ...,["z","z","z"]] sw_list[0][1] 의 내용에 "프로그래밍" 이 있으므로 sw_first_list 에 ["웹\파이선프로그래밍", "1"] 를 추가한다. :param keyword: 내가 찾고 싶은 키워드 이다. ex) 프로그래밍 :return: None """ for i in range(univ.sw_list.__len__()):
def setJeonju_uni(self): conn = self.mypool.connect() # 크롬 headless 모드 실행 chrome_option = webdriver.ChromeOptions() chrome_option.add_argument('headless') chrome_option.add_argument('--disable-gpu') chrome_option.add_argument('lang=ko_KR') chrome_option.add_argument('--window-size=1920,1080') print('start jeonju_university') for k in range(10): try: driver = webdriver.Chrome("driver/chromedriver", chrome_options=chrome_option) driver.get("https://startower.jj.ac.kr/") time.sleep(1) driver.find_element_by_id( "mainframe_childframe_form_DivMenuFrame_DivMainMenu_btn_MainMenu03" ).click() time.sleep(0.5) driver.find_element_by_id( "mainframe_childframe_form_DivMenuFrame_DivSubMenu_btn_SubMenu04" ).click() time.sleep(0.5) breakfast = [] lunch = [] supper = [] day = [] num = [] for i in range(1, 6): driver.find_element_by_id( "mainframe_childframe_form_DivMain_btn_Preview0" + str(i)).click() day.append( driver.find_element_by_id( "mainframe_childframe_form_DivMain_btn_Preview0" + str(i)).text) driver.switch_to_frame( 'mainframe_childframe_form_DivMain_web_Content_WebBrowser' ) html = driver.page_source soup = BeautifulSoup(html, "html.parser") breakfast.append( soup.find_all('tr')[0].find_all('td') [1].get_text().strip().replace('\t\t\t\t', '<br>')) lunch.append( soup.find_all('tr')[1].find_all('td') [1].get_text().strip().replace('\t\t\t\t', '<br>')) supper.append( soup.find_all('tr')[3].find_all('td') [1].get_text().strip().replace('\t\t\t\t', '<br>')) num.append(i) driver.switch_to_default_content() driver.close() jeonju = University("전주대학교") for i in range(5): carte = Carte(day[i], breakfast[i], lunch[i], supper[i], num[i]) jeonju.addCarte(carte) print("finish jeonju_university") self.addUniversity(jeonju, conn) conn.close() break except BaseException as e: print(e) print('retry jeonju_university(' + str(k) + ')') time.sleep(1)
def setWonkwang_uni(self): conn = self.mypool.connect() # 크롬 headless 모드 실행 chrome_option = webdriver.ChromeOptions() chrome_option.add_argument('headless') chrome_option.add_argument('--disable-gpu') chrome_option.add_argument('lang=ko_KR') chrome_option.add_argument('--window-size=1920,1080') print('start: wonkwang_university') for k in range(10): try: driver = webdriver.Chrome("driver/chromedriver", chrome_options=chrome_option) driver.get("https://dorm.wku.ac.kr/?cat=6") driver.find_element_by_tag_name( 'tbody').find_elements_by_tag_name( 'tr')[0].find_element_by_tag_name('a').click() html = driver.page_source driver.close() soup = BeautifulSoup(html, "html.parser") table = soup.find('table', 'tbl_type').find('tbody') temp = [["" for j in range(7)] for i in range(3)] day = [] num = [i for i in range(7)] for i in table.find('tr').find_all('th'): day.append(i.get_text()) del day[0] for i in range(3): for j in range(7): temp[i][j] += table.find_all('tr')[ (i * 5) + 1].find_all('td')[j + 2].get_text().replace( '\xa0', '') + '<br>' temp[i][j] += table.find_all('tr')[ (i * 5) + 2].find_all('td')[j + 1].get_text() + '<br>' temp[i][j] += table.find_all('tr')[ (i * 5) + 3].find_all('td')[j + 1].get_text() + '<br>' temp[i][j] += table.find_all('tr')[ (i * 5) + 4].find_all('td')[j].get_text() + '<br>' temp[i][j] += table.find_all('tr')[ (i * 5) + 5].find_all('td')[j].get_text().strip().replace( '\n/', '<br>').replace('\n', '<br>') breakfast = temp[0] lunch = temp[1] supper = temp[2] wonkwang = University('원광대학교') for i in range(7): carte = Carte(day[i], breakfast[i], lunch[i], supper[i], num[i]) wonkwang.addCarte(carte) self.addUniversity(wonkwang, conn) conn.close() break except BaseException as e: print(e) print('retry: wonkwang_university(' + str(k) + ')') time.sleep(1) print('finish wonkwang_university')
def getUniversiryInfo(self, line_to_find, major_to_find, region_to_find): #매개변수는 string으로 전달 rst_university_list = [] conn = http.client.HTTPConnection(self.__Server) URL = "http://www.career.go.kr/cnet/openapi/getOpenApi?apiKey=fecd1f7f737539284f53c14621096584&svcType=api&svcCode=MAJOR&contentType=xml&gubun=univ_list" if line_to_find !='': i_line_to_find=0 if line_to_find=='인문계열': i_line_to_find=100391 elif line_to_find=='사회계열': i_line_to_find = 100392 elif line_to_find == '교육계열': i_line_to_find = 100393 elif line_to_find == '공학계열': i_line_to_find = 100394 elif line_to_find == '자연계열': i_line_to_find = 100395 elif line_to_find == '의약계열': i_line_to_find = 100396 elif line_to_find == '예체능계열': i_line_to_find = 100397 URL += "&subject=" + str(i_line_to_find) conn.request("GET", URL) rq = conn.getresponse() strXml = rq.read().decode('utf-8') #print(strXml) if major_to_find != '': # 학과가 해당하는 학과코드를 탐색 # (한 학과가 두 개의 학과코드에 포함되어 있는 경우가 있음) tree = ET.ElementTree(ET.fromstring(strXml)) universityElements = tree.iter("content") # return list type major_seq_list=[] for university in universityElements: major_list = university.find("facilName") for major in major_list.text.split(','): if major == major_to_find: major_seq=university.find("majorSeq").text major_seq_list.append(major_seq) print(major) print("major_seq: ",major_seq) # 탐색한 학과코드로 재요청 rst_university_name_list = [] #result_college_name = [] #result_campus_name = [] for i in major_seq_list: for j in self.getUniversiryInfoByMajorSeq(i): # 학교가 중복으로 나올 수 있으므로 학교 이름으로 중복 방지 ( 타 캠퍼스는 다른 학교로 취급) if [j.find("schoolName").text, j.find("campus_nm").text] not in rst_university_name_list: if (region_to_find != '')and (j.find('area').text != region_to_find): # 지역 검색시 continue rst_university_list.append(Univ.University(j.find("schoolName").text,j.find("campus_nm").text,j.find("majorName").text,j.find("area").text,j.find("schoolURL").text)) rst_university_name_list.append([j.find("schoolName").text, j.find("campus_nm").text]) #rst_university_list.sort(key=lambda x: (x.find("schoolName").text, x)) return rst_university_list # type University list