📆 DAY36
3. 웹크롤링을 활용한 데이터 수집 자동화
(6) ChatGPT를 활용한 엑셀 자동화
- 크롤링 코드를 짜달라고 하는 것은 효율성이 떨어짐
- '내가 작성한 코드든 IT 뉴스 기사를 수집하는 코드야. 여기에 수집한 정보를 엑셀에 기록하는 기능을 추가하고 싶어. 첫 번째 열에는 뉴스 기사 제목, 두 번째 열에는 뉴스 기사 본문 링크, 세 번째 열에는 뉴스 기사 본문 내용을 넣어줘. 모든 열은 다 가운데 정렬로 하고, 글자 크기는 12 정도로 만들어줘. 본문 링크를 클릭하면 해당 웹페이지로 바로 이동할 수 있도록 해줘. 내가 작성한 코드는 절대로 수정하지마.' 위 문장으로 명령함
- 받은 코드
import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook
from openpyxl.styles import Alignment, Font
from openpyxl.utils import get_column_letter
from openpyxl.worksheet.hyperlink import Hyperlink
keyword = input("검색어 입력 >> ")
page_num = 1
# 엑셀 파일 생성
wb = Workbook()
ws = wb.active
ws.title = "뉴스 데이터"
ws.append(["제목", "링크", "본문 내용"])
# 셀 정렬과 폰트 스타일 설정
center_align = Alignment(horizontal="center", vertical="center", wrap_text=True)
font_style = Font(size=12)
while True:
code = requests.get(
f"https://underkg.co.kr/index.php?mid=news&search_keyword={keyword}&search_target=title_content&page={page_num}&division=-2934548&last_division=-2902705")
soup = BeautifulSoup(code.text, "html.parser")
title = soup.select("h1.title > a")
if len(title) == 0:
break
for i in title:
print(f"제목 : {i.text}")
link = i.attrs["href"]
print(f"링크 : {link}")
code_news = requests.get(link)
soup_news = BeautifulSoup(code_news.text, "html.parser")
content = soup_news.select_one("div.read_body")
content_text = content.text.replace("\n", " ").strip()
print(content_text)
print("---------------------------------------")
# 엑셀에 데이터 추가
row = [i.text, link, content_text]
ws.append(row)
# 방금 추가한 행에 스타일 적용
last_row = ws.max_row
for col in range(1, 4):
cell = ws.cell(row=last_row, column=col)
cell.alignment = center_align
cell.font = font_style
# 링크 셀에 하이퍼링크 추가
ws.cell(row=last_row, column=2).hyperlink = link
ws.cell(row=last_row, column=2).style = "Hyperlink"
page_num += 1
# 열 너비 자동 조절 (간단히 넓게 설정)
for col in range(1, 4):
col_letter = get_column_letter(col)
ws.column_dimensions[col_letter].width = 30
# 파일 저장
wb.save("뉴스_데이터.xlsx")
더 알고 싶은 점
- 조금 생뚱맞기는 하지만, 챗지피티한테 어떻게 하면 네가 코드를 짜달라는 말을 잘 이해할 수 있냐고 물어보았다.
-> 실행 결과
✅ 코드 요청할 때 좋은 방법
- 짧고 명확한 제목
- 예: "파이썬으로 웹사이트에서 텍스트 수집해줘"
- 예: "리스트 정렬하는 코드 짜줘"
- 하고 싶은 걸 자세히 설명해줘
- 예:
- "BeautifulSoup을 써서 'https://example.com'에서 <p> 태그 안의 텍스트를 수집하고, 그걸 리스트에 넣어줘."
"결과는 print()로 출력하고, 내용 중 'error'라는 단어가 있으면 무시해줘."
- 형식이나 조건이 있으면 꼭 말해줘
- 예:
- "결과를 엑셀로 저장하고, 가운데 정렬해줘. 글자 크기는 12로."
"함수로 만들어줘. 나중에 재사용할 수 있게."
- "내 코드는 수정하지 마!" 같은 조건도 명확하게 말해줘
- 너무 좋아. 그렇게 말해주면 내가 네 의도 절대 안 벗어나게 코딩해줄 수 있어.
❌ 덜 명확한 방식
- "코드 짜줘" → 너무 짧아서 뭘 원하는지 잘 모를 수 있어
- "크롤링 해줘" → 뭘 크롤링할지, 어디서, 어떻게 저장할지 몰라서 애매해
요약하면?
단답형으로 시작해도 괜찮아.
하지만 하고 싶은 걸 '상황 + 목적 + 조건'으로 구체적으로 말해주면 훨씬 좋은 코드 나와!
라고 한다.
느낀 점
챗지피티를 많이 활용하는 사람이기는 하지만, 가끔씩 내 코드를 마음대로 바꾼다던가 (특히 이미 자료에 나와있는 내용이라 바꾸면 안 되는데) 하는 문제가 있었다. 그때마다 하나씩 명령어를 생성해 원치 않게 긴 대답을 여러 번 받았어야했다. 그런데 이번 강의에서 예시로 제시해준 명령어를 보고, 명령어를 작성할 때에는 최대한 자세하게, 질문이 나오지 않을 정도로 꼼꼼하게 입력해야한다는 것을 알게 되었다. 특히 뉴스 기사 본문 링크를 '링크'라고 적지 않고 '뉴스 기사 본문 링크'라고 세세하게 적자 코드가 깔끔하게 나오는 것을 보고 체감했다. 앞으로 챗지피티를 더욱 제대로 활용할 수 있을 것 같다.
'멋쟁이사자처럼 13기 > TIL 챌린지' 카테고리의 다른 글
| 멋쟁이사자처럼 후기 + 일은 간편해지고 수익은 성장하는 자동화 스킬 : 파이썬부터 Chat GPT 까지 (0) | 2025.05.15 |
|---|---|
| 멋쟁이사자처럼 후기 + 일은 간편해지고 수익은 성장하는 자동화 스킬 : 파이썬부터 Chat GPT 까지 (0) | 2025.05.14 |
| 멋쟁이사자처럼 후기 + 일은 간편해지고 수익은 성장하는 자동화 스킬 : 파이썬부터 Chat GPT 까지 (0) | 2025.05.12 |
| 멋쟁이사자처럼 후기 + 일은 간편해지고 수익은 성장하는 자동화 스킬 : 파이썬부터 Chat GPT 까지 (0) | 2025.05.11 |
| 멋쟁이사자처럼 후기 + 일은 간편해지고 수익은 성장하는 자동화 스킬 : 파이썬부터 Chat GPT 까지 (0) | 2025.05.10 |