Appia의 IT세상

[파이썬 크롤링]네이버 주식 시가 총액 코스피 50위까지 순위 항목 가격 출력하기(bs4, requests) 본문

Python/Python Crawler[크롤러]

[파이썬 크롤링]네이버 주식 시가 총액 코스피 50위까지 순위 항목 가격 출력하기(bs4, requests)

Appia 2021. 9. 24. 06:46
반응형

[파이썬 크롤링]네이버 주식 시가 총액 코스피 50위까지 순위 항목 가격 출력하기(bs4, requests)

[파이썬 크롤링]네이버 주식 시가 총액 코스피 50위까지 순위 항목 가격 출력하기(bs4, requests)

 크롤링을 하는 이유는 가장 쉽게 인터넷에 있는 취합하는 것이라고 생각합니다. 그 정보를 이용하여 사용자마다 각기 다양한 목적으로 사용할 수 있습니다. 그래서 이번 포스팅에서는 많은 사람들이 사용하는 네이버 금융에 있는 정보를 바탕으로 원하는 정보를 취합하는 형태에 대해서 이야기를 해보고자 합니다. 그 중에서 가장 쉽게 시가 총액 기준으로 표시해주는 부분이 있는데 이 부분에 첫페이지에 있는 정보를 출력해보도록 하겠습니다. 

 

먼저, 다음에 있는 사이트를 클릭해보도록 하겠습니다. 

https://finance.naver.com/sise/sise_market_sum.naver

 

시가총액 : 네이버 금융

관심종목의 실시간 주가를 가장 빠르게 확인하는 곳

finance.naver.com

아마도 다음과 같은 화면이 나타날 것입니다. (날짜에 따라서, 순서가 약간 다를 수 있습니다.) 그럼 빨간색으로 되어 있는 부분위주로 출력을 해보도록 하겠습니다. 

네이버 금융 - 시가총액 화면 

먼저, 크롤링을 하기 전에 어떤 부분을 대상을 잡고 크롤링을 해야할지에 대해서 먼저 살펴보겠습니다. 크롬에서는 각 항목들이 HTML에서 어떻게 보이는지에 대해서 확인할 수 있습니다. 관련해서는 다음 링크 부분을 검토해주시길 바랍니다. 

[윈도우10 Windows10]크롬(Chrome) 웹사이트 HTML 코드 확인하기

 

[윈도우10 Windows10]크롬(Chrome) 웹사이트 HTML 코드 확인하기

[윈도우10 Windows10]크롬(Chrome) 웹사이트 HTML 코드 확인하기 크롤링을 하다보면, 자연럽게 해당 웹 사이트의 HTML을 자주 보게 됩니다. 하지만, 우리가 흔히 보이는 웹사이트에서는 관련된 정보

appia.tistory.com

일단, 보이는 부분과 같이 tbody부분을 보니, 관련된 데이터를 1차적으로 구별할 수 있을 것 같습니다. 따라서, find 명령어를 통해서 tbody 부분을 전체 파싱을 할 예정입니다. 

네이버금융 html부분에서의 데이터 확인 

그럼 각 항목들을 살펴보도록 하겠습니다. 그리고 추가적으로 각항목들을 검토해보니 다음 태그와 속성를 바탕으로 정보를 추출할 수 있겠다는 생각을 합니다. 

'tr', onmouseover="mouseOver(this)"

이 부분을 바탕으로 find_all()메소드를 통해서 각 항목들을 선별해보도록 하겠습니다. 

네이버 금융 각 항목 확인 

여기에서 추가로 다음과 같은 부분을 검토할 수 있었습니다. 먼저, 다음과 같은 코드를 바탕으로 디버깅 모드로 실행을 해보았습니다. 

import requests
from bs4 import BeautifulSoup
res = requests.get('https://finance.naver.com/sise/sise_market_sum.naver')
soup = BeautifulSoup(res.content,'html.parser')

section = soup.find('tbody')
items= section.find_all('tr', onmouseover="mouseOver(this)")
for item in items :
    basic_info = item.get_text()
    print(basic_info)

그 결과 다음과 같은 결과가 나타나는 것을 보았습니다. 

1
삼성전자
77,400


				200
				



				+0.26%
				

100
4,620,612
5,969,783
51.93
16,991,216
16.30
9.99

여기에서 보이는 부분들을 행간 문자들로 구별할 수 있겠다는 생각이 들었습니다. 그래서 다음과 같은 split 명령어를 이용하여 저 부분들을 나누어보기로 하였습니다. 그래서 다음과 같은 부분들을 추가하였습니다. 

sinfo = basic_info.split("\n")

위의 코드에서의 행간(\n)문자를 이용하여 split을 하니 다음과 같은 결과가 나타나는 것을 볼 수 있었습니다. 

split 결과 

그럼 여기에서 원하는 정보를 바탕으로 사용하면 됩니다. 그래서 다음과 같은 전체 코드를 작성하실 수 있습니다. 

import requests
from bs4 import BeautifulSoup
res = requests.get('https://finance.naver.com/sise/sise_market_sum.naver')
soup = BeautifulSoup(res.content,'html.parser')

section = soup.find('tbody')
items= section.find_all('tr', onmouseover="mouseOver(this)")
for item in items :
    basic_info = item.get_text()
    sinfo = basic_info.split("\n")
    print("\t" + sinfo[1] +"\t\t"+sinfo[2]+"\t\t\t"+sinfo[3])

위의 코드를 실행하면 다음과 같은 결과가 나타나는 것을 알 수 있습니다. 

	1		삼성전자			77,400
	2		SK하이닉스			105,500
	3		NAVER			400,000
	4		삼성바이오로직스			920,000
	5		삼성전자우			71,800
	6		LG화학			760,000
	7		카카오			115,000
	8		삼성SDI			731,000
	9		현대차			208,500
	10		셀트리온			284,500
	11		기아			84,200
	12		카카오뱅크			66,400
	13		POSCO			346,500
	14		현대모비스			263,000
	15		크래프톤			500,000
	16		삼성물산			130,500
	17		LG전자			140,500
	18		SK이노베이션			245,500
	19		SK텔레콤			310,000
	20		KB금융			51,500
	21		LG생활건강			1,337,000
	22		신한지주			38,950
	23		SK바이오사이언스			259,000
	24		SK			271,500
	25		SK아이이테크놀로지			220,000
	26		한국전력			24,200
	27		HMM			37,850
	28		LG			95,300
	29		삼성생명			71,800
	30		하나금융지주			44,300
	31		삼성전기			177,000
	32		엔씨소프트			584,000
	33		삼성에스디에스			165,500
	34		포스코케미칼			158,000
	35		대한항공			34,200
	36		S-Oil			104,000
	37		KT&G			80,900
	38		아모레퍼시픽			189,500
	39		두산중공업			21,100
	40		삼성화재			227,500
	41		하이브			270,500
	42		넷마블			121,000
	43		고려아연			510,000
	44		롯데케미칼			258,500
	45		현대중공업			99,100
	46		한온시스템			16,300
	47		SK바이오팜			109,500
	48		KT			32,500
	49		우리금융지주			11,100
	50		한화솔루션			42,100

이와 같은 방식으로 코스피 부분에 대한 시가총액 1~50위의 순위와 항목, 가격등에 대한 정보를 출력할 수 있습니다. 

[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목과 링크주소출력하기 (bs4, requests)

 

[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목과 링크주소출력하기 (bs4, requests)

[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목과 링크주소출력하기 (bs4, requests) 이전 포스팅에서는 추천뉴스의 제목을 추출하는 방법에 대해서 포스팅을 했습니다. 그 작업을 하고

appia.tistory.com

이번 포스팅에서는 [파이썬 크롤링]네이버 주식 시가 총액 코스피 50위까지 순위 항목 가격 출력하기(bs4, requests)라는 주제로 간단히 포스팅을 해봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 

반응형
Comments