[Python] 웹페이지 변화 감지하기
2017. 4. 27. 16:48
개발/Python
반응형
# 1
음.. 파이썬을 시작하게된 이유였던가 ?
웹 페이지에 변화를 감지하기 위해서 파이썬을 처음으로 깔았다.
페이지 변화를 감지해서 뭐하냐 싶겠지만 의외로 용도가 많다.
공지사항에 새로운글(있던 글이 지워지거나 수정된 것도 감지되겠지만)을 체크하여 알림을 보낼 수 있고,
뭐 다른 용도도 많이 있다.
내가 처음 사용한 용도는 회사 홈페이지가 뻑나면 복구 스크립트를 돌리는데 사용했다.
뻑난지를 이 방법으로 확인한거지
# 원리
원리는 별거 없다.
일정 주기마다 페이지를 긁어 해쉬값으로 저장해두고 기존에 저장된 해쉬값과 비교를 하는 것이다.
페이지가 조금만 달라져도 해쉬값은 크게 변하니 쉽게 감지할 수 있다.
# 소스
1. 페이지를 긁어서 해쉬값으로 변환하여 저장
음.. getList는 긁어오고 싶은 사이트들을 저장해둔 파일을 불러오는 소스라서 무시해도된다.
그냥 주소써서 긁어오면됨
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | # coding : utf-8 import requests import hashlib import time import sys import re import getList reload(sys) sys.setdefaultencoding('utf-8') # get check list lines = getList.getList() cnt = len(lines) i = 0 try : while i < cnt: chkList = re.split(r'[\s]',lines[i]) i += 1 with requests.Session() as c: URL = chkList[1] html = c.get(URL) m = hashlib.md5(html.text) now = time.localtime() file = open("PATH/md5_%s_%04d-%02d-%02d.log"%(chkList[0],now.tm_year, now.tm_mon, now.tm_mday),'a') print >> file, m.hexdigest() file.close() execfile("PATH/check.py",{}) except: print 'error' | cs |
2. 페이지비교
offset에 따라 몇번째까지 비교할지 설정할 수 있고
2로 되어있으니 최근 2번 것과 비교하여 다르면 메시지를 보내도록 하였다.
(메시지는 텔레그램으로 보내면 편함)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #-*- coding: utf-8 -*- import time import re import getList import sendMsg # get check List lists = getList.getList() lists_cnt = len(lists) i = 0 while i < lists_cnt: chkList = re.split(r'[\s]',lists[i]) i += 1 now = time.localtime() file = open("PATH/md5_%s_%04d-%02d-%02d.log"%(chkList[0], now.tm_year, now.tm_mon, now.tm_mday),'r') lines = file.readlines() file.close() flag = True cnt = len(lines) # set compare res offset = 2 if cnt < offset: offset = cnt # compare hash value for j in range(cnt-offset, cnt): if lines[j] != lines[cnt-1]: flag = False # if unmatch if flag == False: # send msg for z in range(2, len(chkList)): sendMsg.send_msg_to_telegram(chkList[z],'['+chkList[0]+'] 변화 감지 : \t'+chkList[1]) | cs |
# 마침
벌써 비슷한 방식으로 3개째 프로그램을 만들었다.
생각하기에 따라서 활용도가 많으니 잘 활용해봐야겠다.
반응형
'개발 > Python' 카테고리의 다른 글
[wxpython] 다중모니터 감지하기 (0) | 2017.06.28 |
---|