Selenium으로 네이버 접속 + ChatGPT API 활용 블로그 글 자동 생성

.
.
[9기문과생도AI] 3 주차 Mission 은 2가지 입니다.


  • 셀레니움으로 네이버 접속하기


  • Python과 OpenAI Chat Completions API를 활용하여 자동으로 블로그 글 생성하기




[미션 1] Selenium으로 네이버 접속하기


1) 네이버 접속

2) 검색창에 원하는 검색어 입력

3) 검색 버튼 클릭

(추가) 화면 캡처 이미지 저장


  • 코드 작성은 Grimoire GPTs를 사용하였는데, 코드가 예시 정답과는 다소 다른 형태로 만들어 졌습니다.

ChatGPT - Grimoire


  • 검색창(search_box)을 찾는 요소는 XPATH를 복사해서 넣었습니다.

    코드에 사용할 XPATH 복사 순서는 다음과 같습니다. (3번 : 우클릭)

이후 몇 번의 오류와 수정 작업을 거쳐 검색 클릭까지 성공하는 코드가 완성되었고, 마지막에 검색 화면을 캡처하여 이미지로 저장하는 기능을 추가하였습니다.


  • 다음은 최종 코드와 캡처 화면입니다.


import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

# Initialize the WebDriver (Ensure you have the corresponding driver for your browser)
driver = webdriver.Chrome()

# Open the URL
driver.get("https://www.naver.com")

# Find the search bar using XPATH and enter the search keyword
search_bar = driver.find_element(By.XPATH, '//*[@id="query"]')
search_bar.send_keys("지피터스 부트캠프")

# Press Enter to start the search
search_bar.send_keys(Keys.RETURN)

# Optional: wait for 5 seconds to see the results
time.sleep(5)

# Close the browser
driver.quit()





[미션 2] 나만의 네이버 블로그 컨텐츠 생성하기 with python & ChatGPT API


1. 주제 선정하기

2. 콘텐츠 구상하기

3. Python 스크립트 작성하기

4. 블로그 글 작성 및 게시하기


  • 블로그 글의 주제와 이에 대한 간략한 설명

    몇 가지 주제를 가지고 웹 상에서 ChatGPT에게 대화를 한 것 처럼 작성한 python 스크립트를 실행시켜 봤고, 그 중의 하나가 “ChatGPT가 가족 관계에 미치는 영향” 이라는 주제입니다.

    스마트폰의 보급이 가족 관계에 영향을 미쳤던 것 처럼, ChatGTP와 같은 생성형 AI의 발전도 어떤 식으로든 가족 관계에 영향을 미치지 않을까 싶어서 당사자 ChatGPT로 글을 생성해 보았습니다.

[Input]

topic : ChatGPT가 가족 관계에 미치는 영향

purpose : 스마트폰의 보급이 가족 간의 관계를 형성 하고 유지하는데 영향을 미쳤던 것 처럼 ChatGPT의 발전이 가족 관계에 어떤 식으로든 영향을 줄 것으로 생각됩니다. ChatGPT가 가족 관계에 미치는 긍/부정적인 영향은 무엇이고, 어떻게 활용하는 것이 좋을지에 대해 알아 보고 싶습니다. 



  • Python 스크립트 코드

import os
import openai
import csv

def get_input_from_user():
    topic = input("Enter the topic for the blog post: ")
    purpose = input("Enter the description of the topic: ")
    return topic, purpose

def choose_model():
    print("Choose a model: \n1. gpt-4-turbo-preview\n2. gpt-3.5-turbo")
    choice = input("Enter your choice (1 or 2): ")
    return 'gpt-4-turbo-preview' if choice == '1' else 'gpt-3.5-turbo'

def write_to_csv(topic, purpose, blog_post, filename="blog_post.csv"):
    with open(filename, mode='w', newline='', encoding='utf-8-sig') as file:
        writer = csv.writer(file)
        writer.writerow(['Topic', 'description', 'Blog Post'])
        writer.writerow([topic, purpose, blog_post])

def main():
    try:
        topic, purpose = get_input_from_user()
        model = choose_model()

        api_key = os.getenv("OPENAI_API_KEY")
        if not api_key:
            raise ValueError("API Key not found in environment variables")

        openai.api_key = api_key

        system_prompt = f"당신은 {topic}를 잘 알고 있는 네이버 블로그 SEO 전문가입니다."
        user_prompt = f"블로그 글의 목적은 {purpose}입니다. 이 목적을 참고하여 {topic}에 대한 블로그 글을 생성해 주세요."

        assistant_prompt = f"네이버 SEO를 고려하여 글의 제목을 추천해 주세요. \
                            그리고, 추천 해시태그를 작성된 글의 끝 부분에 추가해 주세요.\
                            단락 마다 단락의 내용에 대한 소제목을 붙여 주세요. "

        response = openai.ChatCompletion.create(
            model=model,
            messages=[
                {"role": "system", "content": system_prompt},
                {"role": "user", "content": user_prompt},
                {"role": "assistant", "content": assistant_prompt},
            ]
        )

        blog_post = response['choices'][0]['message']['content']
        print("Blog post generated successfully.")

        # Write results to CSV
        write_to_csv(topic, purpose, blog_post)
        print("Blog post has been saved to 'blog_post.csv'.")

    except Exception as e:
        print(f"An error occurred: {e}")

if __name__ == "__main__":
    main()


※ (참고) OpenAI API key 값을 시스템 환경 변수로 설정하여 사용하였습니다.



#9기문과생도AI

3
1개의 답글

(채용) 콘텐츠 마케터, AI 엔지니어, 백엔드 개발자

지피터스의 수 천개 AI 활용 사례 데이터를 AI로 재가공 할 인재를 찾습니다

👉 이 게시글도 읽어보세요