Exemple #1
0
    def Ajou_Notice_search():       # 아주대 공지사항 모니터링 함수
        entry_value = entry.get()
        latest_notice_number = 0          # 내가 찾은 키워드의 공지사항 중 가장 최신 숫자
        driver = webdriver.Chrome(executable_path=r'chromedriver.exe')      # 크롬을 이용한 웹 자동화
        driver.get("https://www.ajou.ac.kr/kr/ajou/notice.do")

        time.sleep(5)

        while True:

            elem = driver.find_element_by_id('search_val')      # 공지사항 검색창의 html 태그의 아이디 
            elem.clear()        # 키워드 문구가 중복되지 않도록 하는 작업
            elem.send_keys(entry_value)     # 키워드(토익) 검색창에 입력
            elem.send_keys(Keys.RETURN)     # 검색창에 입력 후 엔터키를 누르는 역할

            html = BeautifulSoup(driver.page_source, 'html.parser')       # html 스타일로 구문 분석
            posts = html.select('div.bn-list-common02.type01.bn-common-cate > table > tbody > tr')

            post_list = []      # 공지사항의 번호, 제목, 공지부서 리스트 

            for post in posts:
                post_dic = {'pnum': '', 'ptitle': '', 'pnotice': ''}
                post_dic['pnum'] = post.find_all("td", class_='b-num-box')[0].text.strip()
                post_dic['ptitle'] = post.find_all('a')[0].text.strip()
                post_dic['pnotice'] = post.select('span.b-writer')[0].text

                post_list.append(post_dic)

            if latest_notice_number == 0:           # 첫번째 탐색
                if entry_value == '':
                    email_title = "모니터링 시작했습니다."

                else:
                    email_title = entry_value + "에 관한 모니터링 시작했습니다."
    
                email_message = post_list[0]['pnum']
                libg.send_gmail('*****@*****.**', email_title, email_message)
                latest_notice_number = post_list[0]['pnum']

            else:           # 두번째부터 계속 이 조건문 
                for i in range(0, len(post_list)):          # 새로운 공지사항이 안떳을때
                    if int(post_list[i]['pnum']) <= int(latest_notice_number):
                            del post_list[i:]
                            break

                if (len(post_list) > 0):               # 새로운 공지사항이 떳을 때
                    latest_notice_number = post_list[0]['pnum'] 
                    email_title = "공지사항이 " + str(len(post_list)) + "개 올라왔습니다."
                    for i in range(0, len(post_list)):
                        email_message = post_list[i]['pnum']
                        
                else:           # 새로운 공지사항이 안떳을 때
                    email_title = "아직 공지사항이 올라오지 않았습니다."
                        
                libg.send_gmail('*****@*****.**', email_title, email_message)

            time.sleep(1800) 
Exemple #2
0
    def search_Ajou_Email():  # 아주대 이메일 모니터링 함수
        ID_value = ID_entry.get()
        Password_value = Password_entry.get()
        email_number = 0

        while True:

            driver = webdriver.Chrome(executable_path=r'chromedriver.exe')
            driver.get("https://mportal.ajou.ac.kr/main.do")

            time.sleep(5)

            elem = driver.find_element_by_xpath(
                "//*[@id='nbHeaderContext']/div[1]/div[1]/div[1]/ul/li/a")
            elem.click()

            time.sleep(5)

            id_element = driver.find_element_by_xpath("//*[@id='userId']")
            id_element.send_keys(ID_value)

            password_element = driver.find_element_by_xpath(
                "//*[@id='password']")
            password_element.send_keys(Password_value)

            login_element = driver.find_element_by_xpath(
                "//*[@id='loginSubmit']")
            login_element.click()

            if email_number == 0:

                email_number = driver.find_element_by_xpath(
                    "//*[@id='P031']/div/div/div/div/div/header/h2/span/i/em/span[1]"
                ).text.strip()
                email_title = "아주대 이메일 모니터링 시작"
                libg.send_gmail("*****@*****.**", email_title, "내용 없음")
                print(email_number)

            else:
                if driver.find_element_by_xpath(
                        "//*[@id='P031']/div/div/div/div/div/header/h2/span/i/em/span[1]"
                ).text.strip() != email_number:
                    temp = int(
                        driver.find_element_by_xpath(
                            "//*[@id='P031']/div/div/div/div/div/header/h2/span/i/em/span[1]"
                        ).text.strip())
                    email_count = temp - int(email_number)
                    email_title = "새로 올라온 이메일의 개수: " + str(email_count)
                    libg.send_gmail("*****@*****.**", email_title,
                                    "내용 없음")
                    print(email_title)

            driver.quit()
            time.sleep(1800)