본문 바로가기
DataScience/Crawling & Scraping

네이버 금융 web scraping

by mkk4726 2022. 4. 19.

* 코드는 Jupyter Notebook에서 작성되었습니다.

Web Scraping.ipynb
0.01MB

 

다음과 같은 네이버 금융 홈페이지에서 날짜, 종가, 전일비, 시가,고가, 거래량 정보를 따오는 코드를 공유해보려한다.

그림1. 네이버 금융 홈페이지

네이버 금융 홈페이지에 카카오를 검색해서 들어간 후 시세를 누르면(그림2참고) 일별 시세 (그림3참고)를 확인할 수 있다.

그림2. 카카오 검색결과
그림3. 카카오 일별 시세

이 일별시세를 전부 따오기 위해서는 밑의 페이지번호를 눌러줘야한다.

처음에는 동적크롤링을 통해 하나씩 눌러주는 방안을 생각했었는데, 생각보다 문제가 쉽게 해결되었다.

그림4. 페이지번호 html 확인

control+shift+c 를 누르고 페이지번호를 누르면 해당 페이지의 html을 확인할 수 있다. 

해당 페이지 번호에는 href = url, 로 url이 연결되어있음을 알 수 있다.

그림5. url 결과

그 url을 누르면 다음과 같은 페이지로 넘어가게 되고 이 페이지의 url을 보면 ( ?다음부분을 query문이라고 한다. )

'https://finance.naver.com/item/sise_day.naver?code=035720&page=1'

query문의 마지막 부분에 페이지번호가 그 앞 부분에는 종목코드가 입력되어있음을 알 수 있다. 

즉 이 부분만 바꾸면 원하는 종목코드의 전체 페이지를 따올 수 있다는 것이다.

 

이제 html을 바탕으로 원하는 정보를 가져오자.

그림6. 날짜의 html
그림7. 종가 같은 숫자 정보의 html

똑같이 control+shift+c 를 누른 후 원하는 부분을 클릭하면 html을 확인할 수 있다. (그림6, 그림7 참고)

이를 바탕으로 코드만 작성해주면 끝난다.

그림8. soup를 이용한 정보가져오기

라이브러리들에 대해 설명하자면 길어지니 생략하고 그림 8처럼 태그명과 클래스 명으로 정보를 가져올 수 있다.

그림9. list에서 정보 뽑아내기

결과는 list다. num_list의 경우 순서대로 종가, 전일비, 시가, 고가, 저가, 거래량을 가지고 있어 순서대로 뽑아내면 된다.

그림10. 최종결과

 

댓글