반응형
수원시 공고 사이트에서 원하는 정보가 새로 올라왔을 때, 해당 정보를 메일로 받는 프로그램을 제작해보았다.
크롤링, 메일링 모두 파이썬으로 작업했고, 정기적으로 크롤링하고 메일링하는 작업은 개인 서버에 crontab 으로 등록해두었다.
import requests
import smtplib
from bs4 import BeautifulSoup
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
response = requests.get("https://www.suwon.go.kr/web/saeallOfr/BD_ofrList.do?q_currPage=1&q_sortName=&q_sortOrder=&q_rowPerPage=20&q_searchKey=SJ&q_searchVal=%EB%B6%84%EC%96%91")
html = response.text
soup = BeautifulSoup(html, 'html.parser')
results = soup.select('.p-table > tbody > tr')
send_msg = ""
number = 1
for result in results:
title = result.select_one('.p-subject').text.strip()
link = result.select_one('.p-subject > a')['href']
date = result.select('td')[4].text.strip()
send_msg += f"{number}. {title}"
send_msg += '\n'
send_msg += f"https://www.suwon.go.kr/web/saeallOfr/{link}"
send_msg += '\n'
send_msg += date
send_msg += '\n\n'
number += 1
gmail_smtp = "smtp.gmail.com"
gmail_port = 465
smtp = smtplib.SMTP_SSL(gmail_smtp, gmail_port)
my_account = "이메일"
my_password = "앱 비밀번호"
smtp.login(my_account, my_password)
to_mail = "전송할 이메일"
msg = MIMEMultipart()
msg["Subject"] = "수원시청 분양 공고 메일 현황 전송"
msg["From"] = my_account
msg["To"] = to_mail
content = send_msg
content_part = MIMEText(content, "plain")
msg.attach(content_part)
smtp.sendmail(my_account, to_mail, msg.as_string())
smtp.close()
위와 같이 간단히 작성하였다.
이렇게 메일이 온다.
crontab 을 이용해 파이썬 프로그램을 실행시키는 스크립트를 매 정시마다 실행시키도록 하였다.
반응형
'개인 프로젝트 > 간단한 프로젝트' 카테고리의 다른 글
[개인프로젝트] BOJ 크롤링을 통한 동아리 출석체크 보조 프로그램 제작 (0) | 2021.01.10 |
---|---|
[개인프로젝트] tkinter로 GUI 입힌 tcp/ip 소켓 통신 프로그램 만들기 (3) | 2020.08.07 |