파이썬을 이용하면 정말 많은 것들을 할 수 있다.
특히 필자 같은 직장인은 정말 귀찮은 업무들을 자동화할 수 있는데 필자는 코딩을 배우고 많은 업무를 자동화하는 데 성공해 업무 강도가 엄청나게 낮아졌고 그 시간에 블로그도 하고 공부도 할 수 있게 되었으며 업무에서도 창의적인 쪽에 집중해 더 좋은 성과를 내게 되었다.
그렇기에 요즘은 일상에 불편함이 있다면 그걸 코딩으로 해결하기 위해 노력하고 있다.
이미 같은 고민을 했던 많은 선배들이 있기 때문에 구글링과 반복적인 시도를 통해 우리는 분명 답을 찾을 수 있다.
파이썬 게시판 새 글 확인 코드
많지는 않지만 회사 홈페이지에 고객 문의사항이 올라올 때가 있다.
이때 답변을 해줘야 하는데 회사에 알림 기능이 없기 때문에 처리가 늦어지면 고객도 불만이 쌓이고 상사들도 싫어한다.
그래서 이 부분을 코딩으로 해결하였다.
회사 고객센터 게시판을 10분마다 확인해서 새로운 게시글이 있다면 텔레그램으로 메시지를 보내준다.
이걸 코드를 응용하면 정말 많은 것들을 해결할 수 있다.
내가 원하는 뉴스가 나올 때마다 메시지를 받을 수도 있고 품절된 상품이 재입고되는 것을 확인하거나 기다리는 공연 정보를 빠르게 확인하는 것 등 무궁무진하게 활용할 수 있다.
우선 코드에 대해서 하나씩 살펴보자.
전체 코드
import telegram
import schedule
import time
import sys
import io
from bs4 import BeautifulSoup
import requests
import pytz
import datetime
recentSubject = ""
def job():
global recentSubject
# 특정 시간에는 메시지 보내지 않게 하기
now = datetime.datetime.now(pytz.timezone('Asia/Seoul'))
if now.hour >= 22 or now.hour <= 7:
return
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
# 텔레그램 봇 정보 입력
token = "텔레그램 토큰"
bot = telegram.Bot(token=token)
BASE_URL = "확인한 URL"
chat_id = 본인 채팅 ID
# 게시판 새글 확인 코드
with requests.Session() as s:
res = s.get(BASE_URL)
if res.status_code == requests.codes.ok:
soup = BeautifulSoup(res.text, 'html.parser')
article = soup.select_one('확인할 html 선택자 입력').text
# 직전 제목과 다른 경우 새 글이니까 메시지 보내기
if recentSubject != article:
bot.sendMessage(chat_id=chat_id, text="새 글")
recentSubject = article
# 10분 마다 실행
schedule.every(10).minutes.do(job)
# 파이선 스케줄러
while True:
schedule.run_pending()
time.sleep(1)
전체 코드는 이런 식이다.
만약 모듈이 없다면 pip install로 설치해주면 된다.
텔레그램 메시지를 보내고 싶다면 봇을 만들고 채팅 ID를 확인해야 한다.
해당 부분은 다른 블로그 글을 링크하니 따라하면 아주 쉽게 만들 수 있다.
게시판 확인 코드
# 게시판 새글 확인 코드
with requests.Session() as s:
res = s.get(BASE_URL)
if res.status_code == requests.codes.ok:
soup = BeautifulSoup(res.text, 'html.parser')
article = soup.select_one('확인할 html 선택자 입력').text
# 직전 제목과 다른 경우 새 글이니까 메시지 보내기
if recentSubject != article:
bot.sendMessage(chat_id=chat_id, text="새 글")
recentSubject = article
확인하고 싶은 url을 BASE_URL에 넣어주고 select_one에 html 선택자를 넣어준다.
선택자는 크롬 개발자 도구에서 확인하면 된다.
필자는 제목 부분의 선택자를 통해 이전 글과 비교를 한다.
이전 글이랑 비교하기 위해 변수를 하나 만들어주고 둘이 비교하게 해주어야 되고 만약 같지 않으면 새 글이니까 메시지를 보내고 꼭 변수에 제목을 넣어주자.
그래야 중복 확인이 제대로 된다.
주기적인 실행
# 10분 마다 실행
schedule.every(10).minutes.do(job)
# 파이선 스케줄러
while True:
schedule.run_pending()
time.sleep(1)
코드를 다 만들었다면 주기적으로 코드를 실행해 확인해줘야 한다.
필자는 10분으로 했지만 원하는대로 바꾸면 된다.
괄호 안에 숫자만 바꾸면 해당 분마다 실행해준다.
시간마다, 초마다 실행하고 싶다면 minutes를 hours나 seconds로 변경해주고 숫자를 바꿔주면 된다.
※ 함께 보면 좋은 글
'IT > 코딩' 카테고리의 다른 글
파이썬 스크린샷 코드 (0) | 2022.05.30 |
---|---|
쿠팡파트너스 트위터 자동화 파이썬 코드 (0) | 2022.05.30 |
파이썬 bs4 네이버 뉴스 크롤링 오류 해결법 (1) | 2021.12.29 |
C# 코루틴, 전처리 (0) | 2021.12.19 |
C# 무명 메소드, 람다식, Action, Func, 예외 처리 (0) | 2021.12.18 |