국어교사의 파이썬 일기

중학교 국어 교사의 파이썬 일기: 데이터 조작 및 웹 스크래핑 기초 소개

국밥먹여주는남자NobackT 2024. 1. 14. 17:51

학습 경험:

오늘도 파이썬으로 데이터를 조작하는 매혹적인 세계에 대해 알아봤습니다. 중학교 국어 교사로서 학생들에게 혁신적인 방법으로 다양한 주제를 가르치는 데 도움이 될 새로운 기술을 배우게 되어 기대가 큽니다.

저는 변수, 데이터 유형, 조건문과 같은 몇 가지 기본적인 Python 개념을 복습하는 것으로 시작했습니다. 그런 다음 list, dictionary, 문자열로 작업하는 방법을 배우기 시작했습니다. 이러한 데이터 구조는 Python에서 데이터를 조작하는 데 필수적인 요소로, 정보를 효율적으로 구성하고 처리할 수 있게 해줍니다.

배운 내용을 연습하기 위해 주식 시장을 예로 들었습니다. API를 사용하여 Alpha Vantage(주가 정보) 및 News API(뉴스 기사 정보)와 같은 웹사이트에서 실시간 금융 데이터를 수집하는 방법을 보여주는 튜토리얼을 따랐습니다. Python의 요청 라이브러리를 사용하여 이러한 API에 HTTP 요청을 전송하고 원하는 데이터를 JSON 형식으로 받을 수 있었습니다.

Code Snippet:

import requests
from newsapi import NewsApiClient

STOCK_NAME = "TSLA"
COMPANY_NAME = "Tesla Inc"

STOCK_ENDPOINT = "https://www.alphavantage.co/query"
STOCK_API_KEY = "XXXXXXXXXXXX"
NEWS_ENDPOINT = "https://newsapi.org/v2/everything"
NEWS_API_KEY = NewsApiClient(api_key="XXXXXXXXXXXXX")

stock_params = {
    "function": "TIME_SERIES_DAILY",
    "symbol" : STOCK_NAME,
    "apikey": STOCK_API_KEY
}
def get_articles(company_name):
    articles = NEWS_API_KEY.get_everything(q=company_name,
                            language='en')
    newest_articles = list(articles['articles'][:3])
    extracted_articles = [
        {'title': article['title'], 'description': article['description']}
        for article in newest_articles
    ]
    return extracted_articles

url = STOCK_ENDPOINT
stock_response = requests.get(url, params=stock_params)
stock_data = stock_response.json()["Time Series (Daily)"]
closing_prices = [float(stock_data[day]['4. close']) for day in list(stock_data)[:2]]
difference = closing_prices[0] - closing_prices[1]
percentage = (difference / closing_prices[0]) * 100

if percentage > 1 or percentage < -1:
    print(f"{COMPANY_NAME} 등락:{percentage}")
    for article in get_articles(COMPANY_NAME):
        print(f"제목:{article['title']}")
        print(f"내용:{article['description']}")
        print()
else:
    pass

어려웠던 점:

  • get_articles 함수 만들 때, extracted_articles 를 리스트컴프리헨션으로 구현하고 싶었는데, 머리가 잘 안돌아갔다.
  • twilio API를 통해 문자 메시지를 보내고 싶은데, 뭐가 문제인지 계속 인증 오류가 뜬다. 서비스센터와 메일을 6번 주고 받았는데도 이제 콘솔에서도 에러가 뜬다.
HTTP Error Your request was:
POST /Accounts/AC3e6bffa166cbe03b1de4c006cb94c51e/Messages.jsonTwilio returned the following information:
Unable to create record: The number +8210XXXXXXXX is unverified. Trial accounts cannot send messages to unverified numbers; verify +8210XXXXXXXX at twilio.com/user/account/phone-numbers/verified, or purchase a Twilio number to send messages to unverified numbers

개인적 성찰:

웹 스크래핑의 개념이 특히 흥미로웠습니다. API를 통해 쉽게 접근할 수 없는 웹사이트에서 데이터를 수집할 수 있게 해줍니다. 이 기술은 학생들이 분석할 수 있도록 대화형 수업을 만들거나 실제 데이터를 수집하는 등 다양한 교육 환경에서 매우 유용할 수 있습니다.

저의 학습 경험과 국어 교사로서의 역할을 연결하면서 저는 일반적으로 파이썬과 코딩이 논리, 시퀀싱, 문제 해결과 같은 추상적인 개념을 가르칠 수 있는 훌륭한 기회를 제공한다는 것을 깨달았습니다. 이러한 기술은 프로그래밍뿐만 아니라 모든 과목을 이해하고 숙달하는 데 필수적입니다.

마무리 생각:

파이썬을 배우는 이 새로운 여정을 시작하면서, 저는 파이썬이 저에게 어떤 도움이 되는지 기대가 됩니다. 내일 저는 BeautifulSoup과 Matplotlib 같은 라이브러리를 사용하여 웹 스크래핑과 데이터 시각화의 세계로 더 깊이 들어갈 계획입니다. 파이썬 프로그래밍을 배우는 저의 경험과 도전을 공유하면서, 저의 독자들도 이 신나는 모험에 함께하기를 바랍니다