01. 제목
패스트캠퍼스 환급챌린지 48일차 미션 (3월 19일) :
파이썬으로 할 수 있는 모든 것 with 47개 프로젝트 초격차 패키지 Online 수강 후기
02. 포스팅 본문 (학습 일기) 가이드
1. 학습 인증샷 2장 이상 포함


2. 학습 후기 700자 이상 (공백 제외)
오늘은 네이버 금융에서 가격을 뽑아보고 종목명, 종목코드, 거래량을 포함하는 다양한 정보를 뽑아보는 것을 배웠다.
앞서 배웠던 bs4를 계속 이용하고 requests 라이브러리를 추가로 써서 파싱해보았다.
일단 크롤링이라는 것은 HTTP 요청을 보내고(request) HTTP 응답(response)을 받는 과정인데 이러한 크롤링을 해주는 어플리케이션을 크롤러라고 하고 크롤러를 만든다는 것은 파이썬 등을 통해 HTTP 요청-응답(request-response)을 구현하는 것이다. 파이썬에 HTTP요청을 보내고 HTTP응답을 받아주는 라이브러리가 바로 requests 라이브러리이다.
이 리퀘스츠 라이브러리를 설치해서 임포트하고 네이버 금융 url (요청을 보내올 url) 변수를 담아주고 가장 많이 쓰는 메서드인 get 요청을 리퀘스츠 라이브러리를 이용해 보낼 것 이다.
해당 부분 실습 내용은 아래에 첨부한다.
참고로 여기서 파이참으로 실습에서 div class today 파싱하는 부분이 자꾸 이전파일 내용으로 불러와져서 코드가 틀렸나하고 계속봐도 코드는 같은데 뭐자 잘못되었나 보니 run에서 이전 파일을 계속 열고 있어서 안나오고 있었다. 실행해볼땐 항상 그 파일을 실행하도록 하자.
다음은 가격만 추출한 부분에서 이번엔 종목명과 거래량 등 다양한 정보를 뽑아본다. 가격 뽑을 때는 거의 첫번째 태그만 정보를 가져와도 되는 경우라 find만 써도 되었는데 종목명과 종목코드는 첫번째 부분에 와서 find 쓰고 거래량 부분은 전일, 고가 이 부분이 table에 잡혀있어서 find_all을 쓰도록 했다. 각 각 추출해서 출력값을 보여주고 마지막에는 다양한 정보를 뽑아 담는 부분이라 딕셔너리를 이용해서 종목코드만 변경해주면 해당되는 정보들을 출력하도록 했다.
주식같은 데이터 값이 계속해서 변동되고 직관적으로 보기 편하고 정보를 가져오기 쉽게 되어있어서 웹크롤링할때 가장 많이 쓰이고 있다. 이번에 배웠던 부분은 사실 find를 익히고 어디쯤에 오는 태그를 가져와야할지 웹페이지의 개발자도구를 열어서 탐색해야하고 변수에 담을지 설정하는 부분이라서 귀찮은 부분이 많은 것 같았다.
[실습예제 - 현재가격추출, 거의 첫번째 태그만 필요한 경우라 find를 쓴다.]
import requests
from bs4 import BeautifulSoup
url = "https://finance.naver.com/item/main.naver?code=005930"
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)
[실습예제 - 다양한 정보 추출하고 find_all 써보기]
import requests
from bs4 import BeautifulSoup
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
dic = crawl("035720")
print(dic)
03. 필수 본문 내용
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
04. 필수 해시태그
#패스트캠퍼스 #직장인자기계발 #직장인공부 #환급챌린지 #패스트캠퍼스후기 #오공완
05. 필수 URL
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
[수강 강의 클립]
[Part 3.] 웹 크롤링 프로젝트
-Ch02. 네이버 금융 크롤링
03. 네이버 금융에서 가격 뽑기
04. 종목명 거래량 등 다양한 정보 뽑아보기
[※ 기타사항메모 ※]
{100% 환급챌린지 미션 가이드 참조 :
https://fastcampus.co.kr/event_online_challenge_2401_mission}
커리어 성장을 위한 최고의 실무교육 아카데미 | 패스트캠퍼스
성인 교육 서비스 기업, 패스트캠퍼스는 개인과 조직의 실질적인 '업(業)'의 성장을 돕고자 모든 종류의 교육 콘텐츠 서비스를 제공하는 대한민국 No. 1 교육 서비스 회사입니다.
fastcampus.co.kr