[문과생도 AI] 1주차 과제

우선 과제 관련 GPT와의 모든 대화입니다. :

ChatGPT


목표 : RSS피드를 Trafilatura와 Feedparser를 통해 크롤링

Step.1 묻지도 따지지도 않고 바로 GPT에게 물어보기


그러니 다음과 같은 코드를 작성해줬습니다.

import feedparser
import trafilatura

# RSS 피드 URL
rss_url = "https://www.mk.co.kr/rss/30000001/"

# RSS 피드 파싱
feed = feedparser.parse(rss_url)

# 피드에서 각 기사 정보 추출
for entry in feed.entries:
    title = entry.title  # 기사 제목
    link = entry.link    # 기사 링크

    # 기사 내용 크롤링
    downloaded = trafilatura.fetch_url(link)
    article_text = trafilatura.extract(downloaded)

    # 기사 정보 출력
    print(f"Title: {title}")
    print(f"Link: {link}")
    print(f"Content: {article_text}")
    print("\n" + "="*80 + "\n")


결과물 :



Step.2 수정 : 글이 너무 줄줄줄 있습니다.. 정리를 했으면 좋을 것 같습니다.
—> Pandas를 사용하여 정리하고 csv파일로 저장



결과물 : 표 형식으로 정리됨. 그러나 CSV 파일은 글자가 깨져서 나옴





Step.3 수정 2 : VS CODE에는 글자가 나오나, 파일이 글자가 깨집니다.
—> CSV 파일 변환 시 문제인 것으로 보이므로, 인코딩 cp949를 해달라고 합니다.

(utf-8 시도했는데 똑같이 깨져서 나왔습니다 ㅜㅜ)



결과물 : 이제는 파일에 글자가 잘 나옴




Step.4 추가 요구 사항 : 기사가 언제 발행되었는지도 알고 싶었습니다.



결과물 : 원하던 대로 구현되었으나, 오류 발생



Step.5 오류 수정(반복)



이후는 코드를 실행하고, 오류를 수정하는 것의 반복이었습니다.

그리하여 최종적으로는 아래와 같이 작성하였습니다.




최종 코드

import feedparser
import trafilatura
import pandas as pd

def remove_special_chars(text):
    """특수 문자를 제거하는 함수"""
    return text.encode('cp949', 'ignore').decode('cp949')

# RSS 피드 URL
rss_url = "https://www.mk.co.kr/rss/30000001/"

try:
    # RSS 피드 파싱
    feed = feedparser.parse(rss_url)

    # 기사 정보를 저장할 리스트
    articles = []

    # 피드에서 각 기사 정보 추출
    for entry in feed.entries:
        title = entry.title  # 기사 제목
        link = entry.link    # 기사 링크
        published = entry.published  # 게시 날짜

        # 기사 내용 크롤링
        downloaded = trafilatura.fetch_url(link)
        article_text = trafilatura.extract(downloaded)

        # 기사 정보를 딕셔너리로 저장
        article_info = {
            "Title": title,
            "Link": link,
            "Content": article_text,
            "Posted Date": published,
        }

        # 리스트에 추가
        articles.append(article_info)

    # pandas 데이터프레임으로 변환
    df = pd.DataFrame(articles)

    # 데이터프레임의 모든 문자열에 특수 문자 제거 적용
    df = df.apply(lambda col: col.map(remove_special_chars) if col.dtype == 'object' else col)

    # CSV 파일로 저장 (cp949 인코딩 사용)
    df.to_csv("articles5.csv", index=False, encoding='cp949')

    # 크롤링 완료 메시지
    print("[완료]")

except Exception as e:
    # 예외 발생 시 크롤링 실패 메시지와 오류 내용 출력
    print("[실패]")
    print(f"오류 내용: {e}")

#11기문과생도AI

3
1개의 답글
지피터스 뉴스레터

이번 주 AI, 딱 쓸 것만

매주 월요일 아침,
읽고 바로 써먹을 AI 소식만