강의 7: 티스토리 글에 ChatGPT 댓글 크롤링으로 작성하기
목표:
이 강의에서는 크롤링을 활용하여 티스토리 블로그의 특정 글에 자동으로 댓글을 작성하는 방법을 학습합니다. 수강자는 웹 페이지 구조를 이해하고, ChatGPT API와 크롤링을 결합하여 자동으로 댓글을 생성하고 게시할 수 있게 됩니다.
1. 티스토리 페이지 구조 이해하기
우선 티스토리 블로그의 댓글 작성 폼과 필요한 요소들(예: 입력 필드, 제출 버튼 등)의 HTML 구조를 파악해야 합니다. 크롬 개발자 도구(또는 다른 브라우저의 개발자 도구)를 사용하여 페이지의 HTML을 분석할 수 있습니다.
주요 요소:
- 댓글 작성 폼: 댓글을 작성하는 텍스트 영역(textarea)의 name 또는 id 속성을 확인합니다.
- 제출 버튼: 댓글을 제출하는 버튼의 name, id, 또는 class 속성을 확인합니다.
- CSRF 토큰: 많은 웹사이트에서는 보안을 위해 CSRF 토큰을 사용합니다. 이 토큰은 댓글을 제출할 때 필수적인 파라미터입니다. HTML에서 이 토큰을 추출하는 방법을 알아야 합니다.
2. ChatGPT API를 사용해 댓글 내용 생성
티스토리 글에 달 댓글 내용을 ChatGPT API를 통해 생성합니다. 이 과정은 이전 API 통합과 유사하게 진행됩니다.
먼저 ReplyDemo.ipynb 라는 새 노트를 만들어서 작업 진행합니다.
import openai
# OpenAI API 키 설정
openai.api_key = '발급받은 API Key'
# ChatGPT를 사용해 댓글 내용 생성
def generate_comment_content(prompt):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # 또는 gpt-4
messages=[{"role": "user", "content": prompt}],
max_tokens=200,
n=1,
stop=None,
temperature=0.7
)
return response['choices'][0]['message']['content'].strip()
3. 크롤링을 사용해 댓글 작성
generate_comment_content 함수 아래 Cell 을 추가해서 작업을 진행합니다.
크롬 드라이버를 이용해서 웹브라우져를 생성합니다. 모든 Cell의 코드를 작성한 후 실행(Ctrl+Enter) 시켜줍니다.
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 크롬 드라이버 경로 설정 (또는 WebDriverManager를 사용하여 자동 설치)
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
# 페이지 열기
url = "https://atomicdev.tistory.com"
driver.get(url)
# 필요한 동작을 수행한 후 브라우저 닫기
# driver.quit() # 자동으로 브라우저를 닫으려면 이 주석을 해제하세요.
# 페이지 열기
url = "https://atomicdev.tistory.com/29"
driver.get(url)
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
# 페이지 로드와 공감(좋아요) 버튼이 나타날 때까지 대기
try:
# 공감(좋아요) 버튼을 포함하는 div 요소가 나타날 때까지 대기 (최대 10초)
like_button_container = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "div.postbtn_like"))
)
# 공감(좋아요) 버튼의 상태 확인 (like_on 클래스가 있는지 확인)
like_button = like_button_container.find_element(By.CSS_SELECTOR, "div.uoc-icon")
if "like_on" not in like_button.get_attribute("class"):
# 버튼이 이미 클릭되지 않은 경우 클릭
like_button.click()
print("공감(좋아요) 버튼을 클릭했습니다.")
else:
print("공감(좋아요) 버튼이 이미 클릭된 상태입니다.")
except Exception as e:
print("공감(좋아요) 버튼을 클릭하지 못했습니다.")
print(e)
# 페이지 로드와 공감(좋아요) 클릭이 완료될 때까지 대기
time.sleep(2)
# 본문 내용 추출
try:
content = driver.find_element(By.CSS_SELECTOR, "div.tt_article_useless_p_margin").text
print("본문 내용을 성공적으로 추출했습니다.")
print(content)
except Exception as e:
print("본문 내용을 추출하지 못했습니다.")
print(e)
driver.quit()
exit()
# 본문 내용을 기반으로 질문 또는 의견 생성
prompt = f"파이썬 고급 개발자 입장에서 다음 글에 대한 평가를 100자 내외로 간결하게 작성해줘: {content}"
comment = generate_comment_content(prompt)
print(f"Generated Comment: {comment}")
try:
# 댓글 입력 필드 찾기 및 텍스트 입력
comment_input = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, "div[contenteditable='true'].tt-cmt"))
)
# 댓글을 입력하여 실제 사용자 입력을 시뮬레이션
driver.execute_script("arguments[0].innerText = arguments[1]; arguments[0].dispatchEvent(new Event('input', { bubbles: true }));", comment_input, comment)
# 등록 버튼이 활성화될 때까지 대기
submit_button = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "button.tt-btn_register"))
)
# 댓글 제출 버튼 클릭
submit_button.click()
print("댓글이 성공적으로 등록되었습니다.")
except Exception as e:
print("댓글을 등록하는 데 실패했습니다.")
print(e)
finally:
time.sleep(3)
#driver.quit()
4. 크롤링 과정 설명
- HTML 분석:
- 티스토리 글의 HTML을 분석하여 댓글 작성에 필요한 데이터를 추출합니다. 여기에는 CSRF 토큰, blogId, postId 등의 필수 파라미터가 포함됩니다.
- 세션 유지:
- requests.Session을 사용하여 로그인된 세션을 유지하거나 쿠키를 관리합니다. 로그인된 상태에서 댓글을 작성해야 할 경우, 세션을 통해 로그인 상태를 유지할 수 있습니다.
- POST 요청:
- 추출한 데이터와 댓글 내용을 포함하여 댓글 작성 요청을 보냅니다. 이때 필요한 모든 파라미터가 올바르게 포함되었는지 확인합니다.
- 응답 처리:
- 댓글이 성공적으로 작성되었는지 확인하기 위해 서버의 응답을 처리합니다. 성공 여부에 따라 적절한 메시지를 출력합니다.
5. 실습: 특정 글에 ChatGPT를 활용해 자동으로 댓글 작성하기
위의 코드를 실습하면서, 티스토리 글에 ChatGPT가 생성한 댓글을 자동으로 작성하는 방법을 구현해봅니다. 크롤링을 통해 댓글을 작성하는 과정에서 발생할 수 있는 문제(예: CSRF 토큰 오류, 로그인 필요 등)를 해결하는 방법도 배우게 됩니다.
결론
이 강의를 통해 수강자는 ChatGPT API와 크롤링을 결합하여 티스토리 블로그에 자동으로 댓글을 작성하는 시스템을 구축하는 방법을 이해하게 됩니다. 다음 강의에서는 이 기능들을 종합하여 더 복잡한 자동화 프로그램을 설계하고 구현하는 방법을 학습해보겠습니다.
'Python과 ChatGPT API를 활용한 자동화 로봇 개발' 카테고리의 다른 글
9_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (0) | 2024.08.15 |
---|---|
8_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (0) | 2024.08.15 |
6_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (2) | 2024.08.15 |
5_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (38) | 2024.08.15 |
4_Python과 ChatGPT API를 이용한 블로그 자동화 프로그램 개발 (26) | 2024.08.15 |