목표 : 1분마다 네이버 날씨 뉴스 검색하여 최신 등록된 목록 있으면 알림 띄우기
사용 패키지 : ToastNotifier( window toast 알림 띄우기 )
selenium( 브라우저 )
requests( http 요청 )
schedule( 스케쥴링 )
필요한 패키지들은 pip install 을 이용해 설치해주고 네이버 검색을 해보니
https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=날씨
query 파라미터가 검색값을 의미하는 것을 알 수 있다. 해당 URL로 접속한 뒤에 개발자 도구를 켜서
뉴스 리스트가 어떤 태그를 가지는지 알 수가 있게 된다.
위에서 확인한 URL과 태그를 조합하면 1분마다 검색값을 호출하여
새로운 뉴스가 있을경우 cmd창 혹은 알림으로 확인 가능하게 된다.
빠르게 검색하여야 할 것이 있다면 해당 소스를 살짝 변경하여 확인할 수 있고
타임 이벤트 같은 경우에도 확인할 수 있게된다.
# parser.py
import requests
import schedule
import time
from win10toast import ToastNotifier
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.firefox import GeckoDriverManager
news_list = []
toaster = ToastNotifier()
browser = webdriver.Firefox(executable_path=GeckoDriverManager().install())
browser.set_window_size(1120, 550)
def searchUpdate():
alert_str = "";
browser.get('https://search.naver.com/search.naver?sm=top_hty&fbm=1&ie=utf8&query=날씨')
#검색이 지연될 경우 대비
time.sleep(1)
#페이지 이동이 필요할 경우 클릭 이벤트로 접근할 수도 있다.
#tab = browser.find_elements_by_class_name("tab__item")
#tab[1].click()
news_element = browser.find_element_by_class_name("_prs_nws_all").find_elements_by_tag_name("dt")
for i in range(len(news_element)):
news_title = news_element[i].find_element_by_tag_name("a").get_attribute("title")
if not news_title in news_list:
news_list.append(news_title)
alert_str += news_title;
alert_str += "\n";
print(news_title)
toaster.show_toast("Sample Notification",alert_str)
schedule.every(1).minutes.do(searchUpdate)
while 1:
schedule.run_pending()
time.sleep(1)
'Language > Python' 카테고리의 다른 글
[ Python ] 핸드폰 이메일 알림 설정하기 (0) | 2019.07.01 |
---|
댓글