Python

python을 통한 주식 관련 정보 추출 (2)

monstro 2024. 3. 3. 19:45
728x90
반응형

https://monstrosite.tistory.com/10

(전의 글에 이어서 작성됩니다.)

 

3) 웹사이트 구조 파악하기

웹사이트 구조를 파악하기 위해 우리는 F12키를 눌러 개발자 도구를 사용할 것입니다.

 

개발자 도구의 위 버튼을 클릭하시면 웹 사이트의 HTML문서에서 우리가 원하는 데이터의 정보를 확인할 수 있습니다.

예시로 우리가 찾고자 하는 회사명을 확인하고 싶다면,

 

 

와 같은 방식으로 사용할 수 있습니다.

 

위의 개발자 도구에서 매매가는 div class="h_company" 태그 아래의 a 태그 안에 위치합니다. 

이러한 구조를 토대로 코드를 작성할 수 있습니다.

 

4) 코드 설계하여 작성하기

import requests
from bs4 import BeautifulSoup

def crwal(code):
	url = f"https://finance.naver.com/item/main.naver?code={code}"

	# url에대해 get 요청을 합니다
	res = requests.get(url)
	
	# 요청한 url을 문자열로 사용하기 위해 다음과 같이 작성합니다
	bsobj = BeautifulSoup(res.text, "html.parser")          		

	# 매매가 처리
	# (1) div태그의 class명이 today인 경우를 찾습니다   
	div_today = bsobj.find("div", {"class" : "today"})	  	
	# (2) 위의 경우에서 em태그가 수식되어있는 경우를 찾습니다
	em = div_today.find("em")                           
	# (3) em 태그안에서 span태그의 class가 blind인 경우에서 .text로 안의 문자열을 가져옵니다
	price = em.find("span" , {"class" : "blind"}).text 

	# 회사명 처리
	# (1) div태그의 class명이 h_compnay인 경우를 찾습니다
	h_company = bsobj.find("div", {"class" : "h_company"})
	# (2) 위의 경우에서 a태그 안의 문자열을 가져옵니다
	name = h_company.a.text 					

	# 각각의 매매가와 회사명을 딕셔너리 안에서 연결합니다
	dic = {"price" : price, "name" : name}	         
    
	# 최종적으로 딕셔너리를 리턴합니다
	return dic		                                        

dic = crwal("086520")
print(dic)

 

매매가와 회사명에 대해 개발자 도구를 통해 데이터의 구조를 가져와 코드상에서 풀어보았습니다.

또 가져온 데이터를 key와 value로 서로 매핑할 수 있는 딕셔너리를 사용하여 연결시켰습니다.

 

위의 코드를 작성하여 실행해보면,

 

다음과 같은 정보를 얻을 수 있습니다.

만약, 더 많은 정보를 원한다면 개발자 도구를 통해 데이터의 구조를 알아내어 적용할 수 있을 것입니다.

728x90
반응형

'Python' 카테고리의 다른 글

Closure와 Decorator  (0) 2024.11.17
인코딩과 디코딩  (0) 2024.11.16
자료형 어노테이션  (0) 2024.11.15
iterator와 generator  (0) 2024.11.14
python을 통한 주식 관련 정보 추출 (1)  (0) 2024.03.03