파이썬 프로젝트 및 응용/게시글 변경사항 체크 후 나에게 자동으로 알림보내기

(프로젝트)파이썬 게시글 변경사항 체크 후 나에게 자동으로 알림보내기 - 4. 변경사항이 있으면 변경내용을 파일로 저장하기

파기차차 2023. 2. 2. 07:59
728x90
반응형
SMALL
728x90
반응형

ㅁ 개요

 

O 프로그램 소개

 

 

 - 이번 글은 이전글(파이썬 게시글 변경사항 체크 후 나에게 자동으로 알림보내기 - 3. 이전에 크롤링한 게시글과 현재 게시글 비교하기)에 이은 4번째 글로 이전글과 현재글 비교 후 변경 사항이 존재하는 경우 변경내용을 파일로 저장하는 방법에 대하여 살펴보겠습니다.

 

 

O 완성된 프로그램 실행 화면

 

 

 - 최종 완성된 프로그램의 결과화면은 아래와 같습니다.

 

1. 아래와 같이 게시글이 변경되면

 

 

 

 

2. 프로그램 실행시 게시글을 모니터링 하고 있다가, 변경 내용을 감지 후

 

 

3. 변경 내용을 파일로 저장(오늘날짜로)한 것을 볼 수 있습니다.

4. 파일을 열어보니 변경된 내용(게시글 제목)이 잘 저장된 것을 알 수 있습니다.

 

 

 

 

 

 

 

 


 

ㅁ 세부 내용

 

O 완성된 소스

 

 

소스 : 3.py( 변경사항 체크 후 파일로 저장)

# -*- coding utf-8 -*-
import time
from bs4 import BeautifulSoup
import requests
import datetime
from datetime import datetime

url = "https://pagichacha.tistory.com"
html = requests.get(url)
soup = BeautifulSoup(html.content, "html.parser")

beforePosts = []

for i in range(3,13):
    beforePost = soup.select_one('#container > main > div > div.area-common > article:nth-child('+str(i)+') > div > a > strong').text
    print(beforePost)
    beforePosts.append(beforePost)

print("++++++++++++++++++++++++++++++++++++++++")

beforeSet = set(beforePosts)

time.sleep(10)
#######################################################################################################

while True:
    now=datetime.now()
    date_ = str(now.year)+"-"+str(now.month)+"-"+str(now.day)+"-"+str(now.hour)+"-"+str(now.minute)+"-"+str(now.second)
    gesiFile = date_+"_gesi.txt"

    url = "https://pagichacha.tistory.com"
    html = requests.get(url)
    soup = BeautifulSoup(html.content, "html.parser")

    afterPosts = []

    for i in range(3,13):
        afterPost = soup.select_one('#container > main > div > div.area-common > article:nth-child('+str(i)+') > div > a > strong').text
        print(afterPost)
        afterPosts.append(afterPost)

    print("++++++++++++++++++++++++++++++++++++++++")
    afterSet = set(afterPosts)
    #######################################################################################################
    gesi = afterSet - beforeSet

    if (gesi):
        print("=======================================================================================")
        print("게시글에 변동사항이 있습니다. 아래 게시글이 변경된 것으로 보입니다.")
        print(gesi,"+++++++++++ 2") 
        with open(gesiFile, 'w') as f:
            f.write(str(gesi)+"\n")
        print("=======================================================================================")
    else:
        print("게시글에 변동사항이 없습니다.")
    #######################################################################################################
    beforeSet = afterSet 

    time.sleep(5)

 

 

 

 

O 소스 다운로드 및 실행

 
 - 소스파일 다운로드 후 cmd, 파워쉘 또는 vscode 등에서 아래와 같이 실행하시기 바랍니다.
 
 > python 3.py

 

 


 
 

O 주요 내용

 

1. 소스를 살펴보겠습니다.

 

 아래에서 다른 부분은 동일하며, 파일명을 오늘날짜 정확히는, 현재 시점으로 지정해 주기위해 datetime.now()함수를 이용하여 now변수로 받아오고, 이를 다시 연,월,일 등으로 가공하여 str()로 만들어준 다음, gesiFile(파일명)이라는 변수로 만들어 주었습니다.

 

 

2. 그리고 나서 아래와 같이 with 키워드를 사용하여 'w' 쓰기모드로 gesi변수에 저장된 변경된 내용(게시글 제목)을 파일로 저장합니다.

 

 

 


 

ㅁ 정리

 

O 우리가 배운 내용

 
 - 오늘 우리는 이전글과 현재글 비교 후 변경 사항이 존재하는 경우 변경내용을 파일로 저장하는 방법에 대하여 알아보았습니다.
 
 
 
 - 오늘 우리가 배운 내용 중 주요한 부분은 아래와 같습니다.
 
 
 > 1.날짜 함수를 이용하여 원하는 형태로 가공 후 파일명을 만들어 줍니다.
now=datetime.now()
date_ = str(now.year)+"-"+str(now.month)+"-"+str(now.day)+"-"+str(now.hour)+"-"+str(now.minute)+"-"+str(now.second)
gesiFile = date_+"_gesi.txt"
 
 > 2. 그리고 with 키워드를 이용하여 위에서 만든 파일명으로 저장합니다.
with open(gesiFile, 'w') as f:
     f.write(str(gesi)+"\n")

 

오늘은 여기까지이며, 댓글하트는 제가 이글을 지속할 수 있게 해주는 힘이 됩니다.

 

 

감사합니다.

 

 

 

※ 추가적인 정보는 아래 유튜브 영상에서 해당 내용을 더욱 자세히 보실 수 있습니다.

 

728x90
반응형
LIST