본문 바로가기
[챌린지]/[패스트캠퍼스] 파이썬 초격차

패스트캠퍼스 환급챌린지 49일차 미션 (3월 20일) : 파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 수강 후기

by 쿠키토끼 2024. 3. 20.

01. 제목

패스트캠퍼스 환급챌린지 49일차 미션 (3월 20일) : 
파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 Online 수강 후기
 

02. 포스팅 본문 (학습 일기) 가이드

 
1. 학습 인증샷 2장 이상 포함

카메라로 직접 촬영한 수강 인증 사진 (캡쳐X)

 

2. 학습 후기 700자 이상 (공백 제외)

오늘은 네이버 금융의 여러 종목의 데이터를 수집하고 엑셀로 저장해보는 것과 Selenium 라이브러리에 대해 배웠다.

앞 시간에 만든 Price, Name, Volume 등을 추출하는 함수를 이용해 종목코드를 바꿔가면서 loof를 돌면서 호출하면서 데이터를 수집해본다. 그리고 Pandas 라이브러리를 이용해서 엑셀로 저장까지 해본다.

판다스의 경우는 데이터프레임 자료구조를 지원해서 표 형태를 다루는데 굉장이 좋은 라이브러리이다. 그래서 데이터 분석에서 많이 쓰인다. 해당 주차에서 판다스를 설치하고 엑셀을 저장하기 위해 openpyxl도 설치해줬다.

해당 실습예제 코드는 아래에 첨부했지만  to_excel로 지정한 엑셀파일명으로 실행을 시키고 나면 엑셀파일이 생성되고 해당폴더에 잘 저장되어있다. 이렇게 파이썬과 엑셀이 연동되어서 쓸 수 있는 것도 좋은 것 같다. 

다음은 세번째 챕터 인스타그램의 좋아요, 댓글달기를 목표로 첫번째 주차에선 Selenium 라이브러리를 쓴다. 이 셀레니움 라이브러리도 지난번에 크롤링에 대해 배울 때 조금 알아보았는데 역시나 BS4와 한 몸처럼 많이 쓰이는 라이브러리이다. 일단 셀레니움은 웹 어플리케이션을 테스트하기한 라이브러리이다. 인스타그램을 예로 들자면 해당 사이트에 접속해서 회원정보가 필요하기 때문에 회원 로그인을 하고 좋아요를 하고 댓글달기 등 해당사이트에서 테스트해보고 잘 구현되는지 확인용으로 필요하다. 또한 웹데이터를 수집하는 부분도 자동화하는데 쓰이기도 한다.

데이터 수집에 리퀘스츠와 비교를 해보자면 리퀘스츠의 경우에는 비교적 호출 하기 쉽고, 쉽지만 직관성이 덜하다. 그리고 잘 구현되지 않는 경우가 많다. 데이터라는게 원하는 데이터만 가져오긴 하지만 그러한 부분이 잘 가져오지 못한다면 데이터의 오염이 생겨서 신뢰할 수 없을 수도 있기에 문제되는 부분이다. 인스타그램의 경우는 로그인을 해야 여러가지 기능이나 보여지는 부분이 있는데 이러한 부분을 가져오지 못하면 아무 소용이없다.(이때 생각난게 아카이브 사이트인데 이 아카이브도 정적 페이지만을 기록하기 때문에 웹 사이트의 기본적인 디자인을 과거와 동일하게 보여준다는 특징이 있지만 로그인/회원가입과 같은 동적인 기능은 제공하지 못해서 아쉬운 부분이 있었는데 이걸 셀리니움으로 이용하면 되지 않나? 라는 정말 초보적인 발상으로 생각해보았다. 강의를 더 들으면서 내가 들었던 생각이 괜찮은지 엉뚱한 생각인지도 알고 싶어서 기록해본다.)반면 셀리니움의 경우는 사람이 화면에서 작동하듯이 쓸 수 있고 다루기가 비교적 어렵긴해도 직관적인 편이다. 또한 리퀘스츠의 문제점인 부분을 해결이 가능하다는 점에서 큰 장점이다. 즉 셀레니움은 복잡하긴 해도 데이터수집되는 활용도가 넓기 때문에 쓰기 좋다로 생각하면 된다.

 

 

[실습예제 - 여러가지 종목 list로 만들어서 데이터 수집하고 excel로 저장하기]

import requests
from bs4 import BeautifulSoup
import pandas as pd
import openpyxl

def crawl(code):
    url = f"https://finance.naver.com/item/main.naver?code={code}"
    res = requests.get(url)
    bsobj = BeautifulSoup(res.text, "html.parser")

    # 현재 가격 추출
    div_today = bsobj.find("div", {"class":"today"})
    em = div_today.find("em")
    price = em.find("span", {"class":"blind"}).text
    print(price)

    # 종목명 추출
    h_company = bsobj.find("div", {"class":"h_company"})
    name = h_company.a.text
    print(name)

    # 종목코드 추출
    div_description = h_company.find("div", {"class":"description"})
    code = div_description.span.text
    print(code)

    # 거래량 추출
    table_no_info = bsobj.find("table", {"class":"no_info"})
    tds = table_no_info.tr.find_all("td")
    volume = tds[2].find("span", {"class":"blind"}).text
    print(volume)

    dic = {"price":price, "name":name, "code":code, "volume":volume}
    return dic

codes = ["035720", "005930", "051910", "000660"]

# dic = crawl("")
# print(dic)

r = []
for code in codes:
    dic = crawl(code)
    r.append(dic)

df = pd.DataFrame(r)
df.to_excel("price.xlsx")

 

 

03. 필수 본문 내용 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
 

04. 필수 해시태그 

#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완

05. 필수 URL 

https://bit.ly/48sS29N

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

 

[수강 강의 클립] 

[Part 3.] 웹 크롤링 프로젝트

-Ch02. 네이버 금융 크롤링

05. 여러 종목의 데이터 수집하고 엑셀로 저장하기

-Ch03. 인스타그램 좋아요, 댓글달기

01. Selenium이란_쓰는 이유

 

[※ 기타사항메모 ※]
{100% 환급챌린지 미션 가이드 참조 : 

https://fastcampus.co.kr/event_online_challenge_2401_mission}

 

커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스

성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.

fastcampus.co.kr