일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 문자열
- Excel
- 안드로이드
- 파이썬
- 아웃룩
- 윈도우11
- windows
- 깃
- Windows11
- 파이썬GUI
- pyqt5
- 엑셀
- win32com
- python3
- pythongui
- matlab
- 오피스
- html
- git
- Outlook
- pandas
- 파이썬3
- office
- Windows10
- Android
- VBA
- 비주얼베이직
- 윈도우10
- 파워포인트
- python
Appia의 IT세상
[파이썬 크롤링]네이버 주식 시가 총액 코스피 50위까지 순위 항목 가격 출력하기(bs4, requests) 본문
[파이썬 크롤링]네이버 주식 시가 총액 코스피 50위까지 순위 항목 가격 출력하기(bs4, requests)
Appia 2021. 9. 24. 06:46[파이썬 크롤링]네이버 주식 시가 총액 코스피 50위까지 순위 항목 가격 출력하기(bs4, requests)
크롤링을 하는 이유는 가장 쉽게 인터넷에 있는 취합하는 것이라고 생각합니다. 그 정보를 이용하여 사용자마다 각기 다양한 목적으로 사용할 수 있습니다. 그래서 이번 포스팅에서는 많은 사람들이 사용하는 네이버 금융에 있는 정보를 바탕으로 원하는 정보를 취합하는 형태에 대해서 이야기를 해보고자 합니다. 그 중에서 가장 쉽게 시가 총액 기준으로 표시해주는 부분이 있는데 이 부분에 첫페이지에 있는 정보를 출력해보도록 하겠습니다.
먼저, 다음에 있는 사이트를 클릭해보도록 하겠습니다.
https://finance.naver.com/sise/sise_market_sum.naver
아마도 다음과 같은 화면이 나타날 것입니다. (날짜에 따라서, 순서가 약간 다를 수 있습니다.) 그럼 빨간색으로 되어 있는 부분위주로 출력을 해보도록 하겠습니다.
먼저, 크롤링을 하기 전에 어떤 부분을 대상을 잡고 크롤링을 해야할지에 대해서 먼저 살펴보겠습니다. 크롬에서는 각 항목들이 HTML에서 어떻게 보이는지에 대해서 확인할 수 있습니다. 관련해서는 다음 링크 부분을 검토해주시길 바랍니다.
[윈도우10 Windows10]크롬(Chrome) 웹사이트 HTML 코드 확인하기
일단, 보이는 부분과 같이 tbody부분을 보니, 관련된 데이터를 1차적으로 구별할 수 있을 것 같습니다. 따라서, find 명령어를 통해서 tbody 부분을 전체 파싱을 할 예정입니다.
그럼 각 항목들을 살펴보도록 하겠습니다. 그리고 추가적으로 각항목들을 검토해보니 다음 태그와 속성를 바탕으로 정보를 추출할 수 있겠다는 생각을 합니다.
'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을 하니 다음과 같은 결과가 나타나는 것을 볼 수 있었습니다.
그럼 여기에서 원하는 정보를 바탕으로 사용하면 됩니다. 그래서 다음과 같은 전체 코드를 작성하실 수 있습니다.
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)
이번 포스팅에서는 [파이썬 크롤링]네이버 주식 시가 총액 코스피 50위까지 순위 항목 가격 출력하기(bs4, requests)라는 주제로 간단히 포스팅을 해봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다.
'Python > Python Crawler[크롤러]' 카테고리의 다른 글
[파이썬 크롤링]네이버 주식 시가 총액 코스닥전체 항목 출력하기 (1) | 2021.09.27 |
---|---|
[파이썬 크롤링]네이버 주식 시가 총액 코스피전체 항목 출력하기 (0) | 2021.09.26 |
[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목과 링크주소출력하기 (bs4, requests) (0) | 2021.08.19 |
[파이썬 크롤링]네이버 스포츠 추천 뉴스 크롤링 하여 제목 출력하기 (bs4, requests) (0) | 2021.08.18 |
Python[파이썬 웹크롤러] 05-WebCrawler beautifulsoup4(뷰티풀 수프) 웹페이지(HTML)를 파싱하기(Parsing) (0) | 2020.10.24 |