네이버 증권 크롤링 | 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보) 444 개의 새로운 답변이 업데이트되었습니다.

당신은 주제를 찾고 있습니까 “네이버 증권 크롤링 – 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보)“? 다음 카테고리의 웹사이트 https://you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: https://you.maxfit.vn/blog/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 스타트코딩 이(가) 작성한 기사에는 조회수 4,989회 및 좋아요 62개 개의 좋아요가 있습니다.

네이버 증권 크롤링 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보) – 네이버 증권 크롤링 주제에 대한 세부정보를 참조하세요

안녕하세요. 초보자를 위한 쉬운 IT 교육 컨텐츠를 만드는 스타트코딩입니다.
이번 영상에서는 네이버 증권 크롤링 하는 방법을 알려드리겠습니다.
주식을 하다 보면 엑셀에 관심 종목이나
현재 가지고 있는 종목을 정리하는 데요.
실시간 주가 정보는 계속 바뀌기 때문에 수작업으로 바꾸어 줘야 합니다.
이는 매우 불편하고 시간이 걸리는 작업이죠.
웹크롤링을 이용하면 클릭 한번에 모든 종목의 실시간 주가 정보를 가지고 올 수 있습니다.
네이버 금융 크롤링을 따라 하면서 자동화의 묘미를 느껴보세요.

해당 강의는 인프런에서 무료로 수강할 수 있습니다 ^^
https://inf.run/SSPf

네이버 증권 크롤링 주제에 대한 자세한 내용은 여기를 참조하세요.

[파이썬 크롤링]네이버 주식 시가 총액 코스피전체 항목 출력하기

이전 포스팅에서는 네이버 주식에서 시갈총액의 첫번째 화면에 있는 항목과 가격에 대해서 출력을 하는 방법에 대해서 포스팅을 해봤습니다. 갑자기 …

+ 여기에 표시

Source: appia.tistory.com

Date Published: 12/5/2021

View: 7384

[웹크롤링] 네이버증권에서 재무제표 가져오기 – 파이프마임

네이버증권에서 삼성전자 검색해서 들어가면 사이트 이름이 다음과 같이 나옵니다. 여기서 ‘005930’ 이 종목코드입니다. 이 코드에 따라서 웹페이지가 …

+ 여기에 보기

Source: seong6496.tistory.com

Date Published: 5/13/2021

View: 974

[PYTHON] 네이버 주식정보 가져오기 (1/4) – 크롤링

[PYTHON] 네이버 주식정보 가져오기 (1/4) – 크롤링 … 네이버 증권 > 시가총액 사이트는 시가총액 순으로 한 페이지에 50개씩의 기업을 보여주고 …

+ 여기를 클릭

Source: cocoabba.tistory.com

Date Published: 12/21/2022

View: 4054

[Python] (1)네이버 금융 증권 데이터(PER,PBR,배당률) 수집

https://finance.naver.com/ 네이버 금융 웹사이트 오늘은 크롤링을 사용하여 네이버 금융에서 증권 데이터를 수집해보도록 하겠습니다.

+ 더 읽기

Source: bigdata-doctrine.tistory.com

Date Published: 4/22/2022

View: 7710

파이썬으로 네이버 금융 뉴스 크롤링하기 (코드/영상 포함)

이번 포스트에서는 네이버 금융 사이트에서 파이썬으로 주식 뉴스를 크롤링 해보겠습니다. 과도한 크롤링은 문제가 될 수 있으니 자제해 주시기 바랍니다.

+ 더 읽기

Source: contents.premium.naver.com

Date Published: 5/11/2022

View: 1251

[크롤링기초] 네이버 주식 현재가 가져오기

네이버 주식 정보 페이지에서 내가 원하는 정보만 가져오기 위해서 먼저 크롬브라우저에서 F12키를 눌러서 html 소스코드 보기를 한다.

+ 자세한 내용은 여기를 클릭하십시오

Source: link2me.tistory.com

Date Published: 2/17/2022

View: 1732

파이썬 초간단 주식 정보 크롤링 예제 : BeautifulSoup(bs4) 이용

파이썬 네이버 주식 정보 크롤링 예시 이번 포스팅에서는 BeautifulSoup 모듈을 활용하여 매우 간단하게 네이버 주식 사이트의 정보를 크롤링해보는 …

+ 자세한 내용은 여기를 클릭하십시오

Source: jimmy-ai.tistory.com

Date Published: 4/6/2022

View: 4850

파이썬 네이버 종목토론방 크롤링 – 코딩하는 금융인

오늘은 파이썬을 활용하여 네이버 증권의 종목토론방의 글들을 크롤링해보겠습니다. 데이터 탐색 & 크롤링 작업 1. 웹사이트 탐색하기 ▷ 사이트 바로 …

+ 여기에 표시

Source: codingspooning.tistory.com

Date Published: 3/24/2022

View: 9184

네이버증권 크롤링 활용 52주 최고가 대비 현재가격의 비율구하기

import requests from bs4 import BeautifulSoup def fin(a): url=’https://finance.naver.com/item/main.nhn?code=’+str(a) res=requests.get(url) …

+ 여기를 클릭

Source: noexpect.tistory.com

Date Published: 7/10/2021

View: 1787

주제와 관련된 이미지 네이버 증권 크롤링

주제와 관련된 더 많은 사진을 참조하십시오 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보)
네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보)

주제에 대한 기사 평가 네이버 증권 크롤링

  • Author: 스타트코딩
  • Views: 조회수 4,989회
  • Likes: 좋아요 62개
  • Date Published: 2021. 9. 23.
  • Video Url link: https://www.youtube.com/watch?v=QlgQ_CCCWXM

[파이썬 크롤링]네이버 주식 시가 총액 코스피전체 항목 출력하기

반응형

[파이썬 크롤링]네이버 주식 시가 총액 코스피전체 항목 출력하기

[파이썬 크롤링]네이버 주식 시가 총액 코스피전체 항목 출력하기

이전 포스팅에서는 네이버 주식에서 시갈총액의 첫번째 화면에 있는 항목과 가격에 대해서 출력을 하는 방법에 대해서 포스팅을 해봤습니다. 갑자기 이번에는 전체 항목에 대해서 출력을 해볼까라는 생각을 하게되었습니다. 일단, 약간의 규칙성을 찾기 위해서 화면 하단에 있는 부분을 번호로 되어 있는 부분들을 마우스를 올려놓아봤습니다.

[1] 부분의 마우스를 올려놓았을 때 화면 좌측에 다음과 같은 링크가 나타났습니다.

https://finance.naver.com/sise/sise_market_sum.naver?&page=1

네이버 금융 시가총액 1페이지 화면위에 마우스 올려놓았을 때

그리고 나서, [맨뒤] 부분에 마우스를 올려놓았을 때는 다음과 같은 링크가 나타나는 것을 확인할 수 있었습니다.

https://finance.naver.com/sise/sise_market_sum.naver?&page=34

네이버 금융 시가총액 맨뒤 화면위에 마우스 올려놓았을 때

이 부분을 바탕으로 for문을 사용하면 되겠다는 생각을 하였습니다. 그럼 일단, 이전에 사용했던 코드를 약간 수정이 불가피할 것으로 보입니다. 먼저 이전에 사용했던 코드를 보면 다음과 같습니다.

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(”

“) print(“\t” + sinfo[1] +”\t\t”+sinfo[2]+”\t\t\t”+sinfo[3])

여기에서 requests.get를 이용하여 불러올 부분에 대해서 약간의 변경이 불가피합니다. 그래서 위에서 보이는 부분들에 대해서 함수 처리를 하고, 주소 부분에 대해서만 반복적으로 사용할 수 있게 변경을 해보도록 하겠습니다.

import requests from bs4 import BeautifulSoup def return_value(address): res = requests.get(address) 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(”

“) print(“\t” + sinfo[1] + “\t\t” + sinfo[2] + “\t\t\t” + sinfo[3]) baseaddress = ‘https://finance.naver.com/sise/sise_market_sum.naver?&page=’ for i in range(1,35): return_value(baseaddress+str(i))

위와 같이 변경을 하였습니다. 위에서 보이는 기본 주소는 페이지에 상관없이 동일한 부분을 넣어두고, 실제 페이지 변경될 때마다 변경되는 부분에 대해서 반영될 수 있게 하여 이 부분을 함수의 인자로 주어서 동일한 효과를 얻을 수 있게 작업을 하였습니다. 위의 코드를 실행화면 다음과 같은 화면이 나타나는 것을 알 수 있습니다.

1 삼성전자 77,300 2 SK하이닉스 104,000 3 NAVER 405,500 4 삼성바이오로직스 922,000 5 삼성전자우 71,700 6 LG화학 761,000 …<중간 생략> 1650 KBSTAR 200금융 8,970 1651 KBSTAR 200철강소재 9,490 1652 ARIRANG 코스닥150 15,140 1653 KBSTAR 모멘텀밸류 14,825 1654 KBSTAR 국채선물10년 55,140 1655 KBSTAR 팔라듐선물인버스(H) 5,685 1656 KBSTAR 200생활소비재 8,280 1657 KINDEX 배당성장 41,365 1658 KBSTAR 200산업재 12,870

이와 같은 방법으로 시가총액 기반으로전체 항목과 가격등을 출력할 수 있습니다.

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

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

반응형

[웹크롤링] 네이버증권에서 재무제표 가져오기

반응형

네이버 증권에서 재무제표를 가져오는 방법입니다.

삼성전자를 예로 하겠습니다.

네이버증권에서 삼성전자 검색해서 들어가면 사이트 이름이 다음과 같이 나옵니다.

여기서 ‘005930’ 이 종목코드입니다.

이 코드에 따라서 웹페이지가 바뀌는 걸 알 수 있습니다.

이를 이용해 해당 페이지에서 기업실적분석을 가져오려고 합니다.

크롤링

다음과 같이 입력해 크롤링을 합니다.

단순하게 URL에서 html 가져와서 표는 판다스로 가져올 수 있으니 판다스로 넘겨서 표로 나오게 합니다.

import pandas as pd import requests code = ‘005930’ URL = f”https://finance.naver.com/item/main.nhn?code={code}” r = requests.get(URL) df = pd.read_html(r.text)[3]

코드 따라서 바뀌니 코드를 입력한대로 URL이 바뀌도록 했습니다.

최근연간실적, 최근분기실적 나누기

실제 데이터로써 사용하기 위해서는 정리가 좀 필요해 보입니다.

먼저 매출액, 영업이익 등등을 인덱스로 만듭시다.

그리고 나서 최근연간실적, 최근분기실적 두개로 나눕니다.

컬럼을 보면 다음과 같이 나옵니다.

df.columns

제일 위에 있는 판다스에 나와있는 표를 보면 알겠지만 (‘주요재무정보’,’주요재무정보’,주요재무정보’) 가 매출액,영업이익 등등을 가지고 있습니다.

첫번째 컬럼을 인덱스로 설정합니다.

그리고 (‘주요재무정보’,’주요재무정보’,주요재무정보’) 를 ‘주요재무정보’ 로 바꿉니다.

df.set_index(df.columns[0],inplace=True) df.index.rename(‘주요재무정보’, inplace=True)

‘IFRS연결’ 을 버려야 하니 droplevel을 씁니다. 지금 컬럼은 (0,1,2) 형식의 튜플로 되어있으니

2번째를 droplevel을 하면 됩니다.

df.columns = df.columns.droplevel(2) df.columns

이제 ‘최근 연간 실적’ 과 ‘최근 분기 실적’ 으로 나눠봅시다.

멀티인덱서이므로 loc와 xs로 나눠줄 수 있는데 현재 경우는 xs으로 하면 됩니다.

annual_date = pd.DataFrame(df).xs(‘최근 연간 실적’,axis=1) quater_date = pd.DataFrame(df).xs(‘최근 분기 실적’,axis=1) annual_date

전체 코드

코드 정리하고 마무리 하겠습니다.

import pandas as pd import requests code = ‘005930’ URL = f”https://finance.naver.com/item/main.nhn?code={code}” r = requests.get(URL) df = pd.read_html(r.text)[3] df.set_index(df.columns[0],inplace=True) df.index.rename(‘주요재무정보’, inplace=True) df.columns = df.columns.droplevel(2) annual_date = pd.DataFrame(df).xs(‘최근 연간 실적’,axis=1) quater_date = pd.DataFrame(df).xs(‘최근 분기 실적’,axis=1)

관련 포스팅

[Python/Pandas] – [Pandas] 멀티인덱스 다루기(loc,xs)

[PYTHON] 네이버 주식정보 가져오기 (1/4)

1. 네이버 주식 시가총액 목록 가져오기 (https://finance.naver.com/sise/sise_market_sum.nhn)

2. 기업 별 상세 재무 데이터 가져오기 ( https://finance.naver.com/item/main.nhn?code= 기업코드)

– def getDataOfParam ( param)

3. Python Dictionary 사용하여 데이터 정리

4. 원하는 데이터 지표 추출 (매출액, 영업이익, 당기순이익, ROE, PER, PBR)

– def printRecommendedItems (stock):

5. 추출 데이터 메일로 자동 전송하기

– def sendEmailfunc (text):

의 5단계를 통해서 네이버 주식정보 가져오는 방법을 포스팅 하려고 한다.

1. 네이버 주식 시가 총액 목록 가져오기

네이버 증권 > 시가총액 사이트는 시가총액 순으로 한 페이지에 50개씩의 기업을 보여주고 있다.

GET 메소드로 Page 값을 넘기고 있음

먼저 url request 를 위해 관련 library 를 추가하면, request 와 BeautifulSoup 를 import 한다.

import requests

from bs4 import BeautifulSoup

HTML의 구조를 이해한다고 생각하고 포스팅을 진행한다. 혹시, HTML 구조에 대해서 댓글을 통해 문의를 하면

포스팅이나 댓글로 충분히 이해할 수 있도록 설명을 하려고 한다.

(필요하신 분은 댓글로 남겨주세요^^)

Python 에서 HTML 을 분석하는 쉬운 방법 중 하나는 HTML문서 구조 분석을 위해 제공되는 BeautifulSoup 라이브러리가 있다. parser 로 lxml 을 이용해서 분석을 쉽게 해준다.

간단한 코드로 예제를 보여주면,

url = https://finance.naver.com/sise/sise_market_sum.nhn?page=1″

res = requests.get(url)

soup = BeautifulSoup(res.text , ‘lxml’ )

print (soup)

코드 실행 결과는 아래와 같이 출력된다. 우리는 이 데이터 중에서 적절한 필터를 활용하여 쉽게 접근하여 원하는 값을 얻을 수 있다.

C:\Python38-32\python.exe “D:/naver_stock.py”

시가총액 : 네이버 금융

….

….

// add data-useragent

document.documentElement.setAttribute(‘data-useragent’,navigator.userAgent);

구조화된 HTML 에 익숙해지려면 F12 버튼을 통해서 확인 할 수 있는 개발자모드와 익숙해져야 한다.

시가총액 순 기업을 보여주는 표의 제목 : HTML 상 Table > thead > tr >th 구조

위 그림은 표의 헤더를 표현하는 HTML 코드이다.

beautifulsoup 는 이러한 html 을 직관적으로 접근 할 수 있게 해준다.

stock_head = soup.find( “thead” ).find_all( “th” )

data_head = [head.get_text() for head in stock_head]

print(data_head)

코드는 soup 객체에서 “thead”를 찾고 ==> 그 하위의 모든 “th”를 찾고 있다.

find_all 함수는 모든 “th”를 불러오기 때문에 리스트로 결과를 받아오고, for loop 를 활용하여 data_head 에 값을 불러올 수 있다.

실행하면 아래와 같은 값을 출력한다.

[‘N’, ‘종목명’, ‘현재가’, ‘전일비’, ‘등락률’, ‘액면가’, ‘시가총액’, ‘상장주식수’, ‘외국인비율’, ‘거래량’, ‘PER’, ‘ROE’, ‘토론실’]

끝으로 동일하게 각 기업의 정보를 불러오면, 아래와 같다.

stock_list = soup.find( “table” , attrs ={ “class” : “type_2” }).find( “tbody” ).find_all( “tr” )

for stock in stock_list:

if len (stock) > 1 :

print (stock.get_text().split())

class:type_2 인 table > tbody > tr 값 불러오기

먼저 html 을 잘 보면 알겠지만 우리가 가지고 오려는 table 외에 하나 더 table 이 있기 때문에 class 명으로 필터를 하여 하나의 테이블을 선택하였고, 하위의 tbody > tr 을 필터하여 기업 리스트를 불러왔다.

tr 데이터를 잘 보면, 일부 tr은 UI를 위해 공백을 만드는 용도로 사용되고 있어 필터하여 stock 의 len이 1이상인 데이터만 호출했다.

결과는 아래와 같다.

(사실,,공백을 없애기 위해 replace 함수를 이용하여 ‘\t’, ‘

‘을 공백으로 바꾸는 삽질을 했었지만, 마지막에 list 로 split 하니 한번에 해결되었다..삽질은..무한하다)

C:\Python38-32\python.exe “D:/naver_stock.py”

[‘N’, ‘ 종목명 ‘, ‘ 현재가 ‘, ‘ 전일비 ‘, ‘ 등락률 ‘, ‘ 액면가 ‘, ‘ 시가총액 ‘, ‘ 상장주식수 ‘, ‘ 외국인비율 ‘, ‘ 거래량 ‘, ‘PER’, ‘ROE’, ‘ 토론실 ‘] [‘1’, ‘ 삼성전자 ‘, ‘66,300’, ‘3,100’, ‘+4.91%’, ‘100’, ‘3,957,966’, ‘5,969,783’, ‘56.45’, ‘35,414,115’, ‘20.74’, ‘8.69’] [‘2’, ‘SK 하이닉스 ‘, ‘98,000’, ‘8,300’, ‘+9.25%’, ‘5,000’, ‘713,442’, ‘728,002’, ‘49.43’, ‘9,213,894’, ‘31.21’, ‘4.25’] [‘3’, ‘ 삼성바이오로직스 ‘, ‘758,000’, ‘1,000’, ‘+0.13%’, ‘2,500’, ‘501,531’, ‘66,165’, ‘10.14’, ‘73,598’, ‘146.02’, ‘4.77’] [‘4’, ‘ 삼성전자우 ‘, ‘58,800’, ‘1,400’, ‘+2.44%’, ‘100’, ‘483,857’, ‘822,887’, ‘86.55’, ‘4,520,731’, ‘18.40’, ‘N/A’] [‘5’, ‘LG 화학 ‘, ‘677,000’, ‘28,000’, ‘-3.97%’, ‘5,000’, ‘477,910’, ‘70,592’, ‘41.00’, ‘531,111’, ‘116.70’, ‘1.84’] [‘6’, ‘NAVER’, ‘278,000’, ‘3,000’, ‘-1.07%’, ‘100’, ‘456,652’, ‘164,263’, ‘55.71’, ‘884,422’, ‘64.80’, ‘10.56’] [‘7’, ‘ 셀트리온 ‘, ‘288,500’, ‘1,500’, ‘-0.52%’, ‘1,000’, ‘389,457’, ‘134,994’, ‘20.56’, ‘575,881’, ‘97.30’, ‘11.19’] [‘8’, ‘ 현대차 ‘, ‘179,000’, ‘1,500’, ‘+0.85%’, ‘5,000’, ‘382,466’, ‘213,668’, ‘30.84’, ‘2,733,268’, ‘25.79’, ‘4.32’] [‘9’, ‘ 삼성 SDI’, ‘485,500’, ‘15,500’, ‘-3.09%’, ‘5,000’, ‘333,852’, ‘68,765’, ‘43.49’, ‘565,597’, ‘178.36’, ‘2.94’] [’10’, ‘ 카카오 ‘, ‘362,000’, ‘3,500’, ‘-0.96%’, ‘500’, ‘319,572’, ‘88,280’, ‘32.04’, ‘555,249’, ‘-206.86’, ‘-5.81′]

[’48’, ‘CJ제일제당’, ‘367,000’, ‘500’, ‘+0.14%’, ‘5,000’, ‘55,249’, ‘15,054’, ‘23.48’, ‘62,306’, ‘9.24’, ‘3.16’] [’49’, ‘코웨이’, ‘74,600’, ‘1,400’, ‘+1.91%’, ‘500’, ‘55,055’, ‘73,800’, ‘61.03’, ‘177,553’, ‘15.68’, ‘30.74’] [’50’, ‘LG디스플레이’, ‘14,950’, ‘200’, ‘+1.36%’, ‘5,000’, ‘53,493’, ‘357,816’, ‘22.44’, ‘1,915,842’, ‘-1.84’, ‘-22.35’]

아주 간단하게 끝날 것 같았던 포스팅이…주저리주저리 2시간을 넘게 작성하고 있다.

다음 포스팅에서는 각각의 기업의 상세정보를 가져오는 코드를 공유하려고 한다.

반응형

[Python] (1)네이버 금융 증권 데이터(PER,PBR,배당률) 수집 : 크롤링

https://finance.naver.com/ 네이버 금융 웹사이트

오늘은 크롤링을 사용하여 네이버 금융에서 증권 데이터를 수집해보도록 하겠습니다.

두 번째 포스팅에 프로그램을 실행해 볼 수 있도록 코랩 링크 달아놓겠습니다.

코딩에 대한 지식이 없는 분들도 단순히 프로그램을 실행하여 코스피 증권 데이터를 엑셀로 가져가실 수 있습니다.

리스트에 코스피에 상장된 주식들의 티커 저장하기

# 모듈 가져오기 !pip install pykrx from pykrx import stock # 오늘날 코스피에 상장되어 있는 주식의 이름과 티커 수집 today = datetime.today().strftime(“%Y%m%d”) ticker_list = stock.get_market_ticker_list(date = today, market=”KOSPI”) symbol_list = [] for ticker in ticker_list: symbol = stock.get_market_ticker_name(ticker) symbol_list.append(symbol) # 코스피 상장 주식의 개수 확인 print(len(ticker_list)) print(len(symbol_list))

pykrx라이브러리에 저장되어 있는 코스피 상장 주식들을 리스트에 저장합니다.

get_market_ticker_list 메서드를 사용해 상장된 주식의 티커를 수집하고

get_market_ticker_name 메소드를 사용해 상장된 주식의 이름을 수집합니다.

주식의 이름을 담은 리스트는 symbol_list에, 주식의 티커를 담은 리스트는 ticker_list에 저장합니다.

stock.get_market_ticker_list(date = today, market=”KOSPI”)

부분에서 date와 market을 자신이 원하는 대로 변경할 수 있습니다.

date는 “YYYYmmdd” (ex.20210210) 양식으로 넣어주셔야 하고 market은 “KOSPI”, “KOSDAQ”, “KONEX”를 넣어주시거나

모두 수집하고 싶다면 “ALL”을 넣어주시면 됩니다. (전부 수집할 경우 시간이 오래 걸리기 때문에 권장하지 않습니다)

CSS Selector 수집하기

# 수집할 증권 데이터의 셀렉터 저장 per_selector = “#_per” pbr_selector = “#_pbr” dividend_yield_selector = “#_dvr”

일단 크롤링을 위해서 css selector를 사용할 것이므로 수집 방법을 알려드리겠습니다.

1. 네이버 금융 페이지에서 아무 주식명을 검색합니다.

2. f12를 눌러 개발자 도구를 엽니다.

3. 요소를 선택하기 1번 표시된 부분을 클릭합니다.

4. 사이트 내에서 수집하고자 하는 데이터 위에 마우스를 클릭합니다.

(간단한 수집을 위해 PER, PBR, 배당수익률의 숫자 부분을 클릭하시길 권장합니다)

5. html코드에서 파란색 줄이 쳐진 곳을 마우스 우클릭합니다.

6. copy -> copy selector를 클릭합니다.

자 이제 html 태그를 사용해 수집하려는 데이터의 css selector를 가져오는 데 성공했습니다!

이제 css selector를 사용하여 크롤링을 할 수 있습니다.

아무 곳에나 붙여 넣기를 해보면 “#_per” 이런 식으로 수집된 것을 볼 수 있습니다.

(#은 id를 의미합니다)

크롤링을 사용하여 증권 데이터 수집하기

float변환을 위해 따옴표 제거# 모듈 가져오기 import requests from bs4 import BeautifulSoup # 크롤링을 사용하여 증권 데이터 수집하기 pers = [] pbrs = [] dividend_yields = [] for ticker in ticker_list: url = f”https://finance.naver.com/item/main.nhn?code={ticker}” html = requests.get(url, headers={‘User-agent’:’Mozilla/5.0′}) soup = BeautifulSoup(html.text, “lxml”) per = soup.select(per_selector) pbr = soup.select(pbr_selector) dividend_yield = soup.select(dividend_yield_selector) if not per: # 리스트가 비어있을 경우 None으로 변환 per = [None] for pe in per: if pe != None: per_text = pe.text per_text = per_text.replace(“,”, “”) # float변환을 위해 따옴표 제거 pers.append(float(per_text)) else: per_text = pe pers.append(per_text) if not pbr: # 리스트가 비어있을 경우 None으로 변환 pbr = [None] for pb in pbr: if pb != None: pbr_text = pb.text pbr_text = pbr_text.replace(“,”, “”) # float변환을 위해 따옴표 제거 pbrs.append(float(pbr_text)) else: pbr_text = pb pbrs.append(pbr_text) if not dividend_yield: # 리스트가 비어있을 경우 None으로 변환 dividend_yield = [None] for d in dividend_yield: if d != None: dividend_yield_text = d.text dividend_yield_text = dividend_yield_text.replace(“,”, “”) # float변환을 위해 따옴표 제거 dividend_yields.append(float(dividend_yield_text)) else: dividend_yield_text = d dividend_yields.append(dividend_yield_text)

코스피 상장 주식의 PER, PBR, 배당률 데이터를 수집합니다.

기본적인 크롤링 모듈인 request와 beautifulsoup을 사용하여 크롤링합니다.

웹사이트 캡처 사진의 url을 보면 빨간 밑줄 쳐진 곳에 주식의 티커가 들어가는 것을 알 수 있습니다.

따라서 url 변수에 f스트링을 사용하여 각 주식의 웹사이트에 접속할 수 있도록 해줍니다.

headers={‘User-agent’:’Mozilla/5.0′}를 넣은 이유는 수집하는 주체가 봇이 아닌 유저임을 알리기 위해서입니다.

(위 코드를 삽입하지 않을 경우 봇으로 인지해 크롤링을 할 수 없습니다.)

soup = BeautifulSoup(html.text, “lxml”)

“html.parser”보다 “lxml”으로 파싱 하는 것이 더 빠릅니다.

단 “lxml”은 추가 설치가 필요하므로 작동이 안 될 경우 “html.parser”을 삽입해 주십시오.

데이터가 수집될 때 리스트 형식으로 수집되므로 for문으로 리스트를 풀어주고 append로 새로운 리스트에 담아줍니다.

(예를 들어 per = soup.select(per_selector)에서 per은 per데이터 한 개가 들어있는 리스트입니다)

수집하려는 데이터가 비어있는 경우에는 None으로 변환해줍니다.

(배당금을 주지 않는 주식의 경우 배당률 데이터가 비어있습니다)

코랩으로 위 코드를 돌릴 경우 약 10분 ~ 15분 정도 소요됩니다.

pers, pbrs, dividend_yields를 출력해보면 데이터가 잘 수집된 것을 볼 수 있습니다.

수집한 데이터를 모아 보기 좋게 시각화를 하고, 데이터프레임에 정리하고 엑셀로 변환하는 작업은 다음에 진행해 보도록 하겠습니다.

https://bigdata-doctrine.tistory.com/4

파이썬으로 네이버 금융 뉴스 크롤링하기 (코드

이번 포스트에서는 네이버 금융 사이트에서 파이썬으로 주식 뉴스를 크롤링 해보겠습니다. 과도한 크롤링은 문제가 될 수 있으니 자제해 주시기 바랍니다.

사용하는 파이썬 라이브러리는 다음과 같습니다.

pip install requests

pip install beautifulsoup4

그럼 네이버 금융 사이트로 가보겠습니다. 여기서 뉴스 탭을 누르면 이렇게 뉴스 포털이 뜹니다.

https://finance.naver.com/news/

소소한 일상 및 업무TIP 다루기 :: [크롤링기초] 네이버 주식 현재가 가져오기

728×90

네이버 주식 정보 페이지에서 내가 원하는 정보만 가져오기 위해서 먼저 크롬브라우저에서 F12키를 눌러서 html 소스코드 보기를 한다.

아래 번호 순서대로 해보자. 먼저 1번을 눌러주면 마우스를 가져가는 곳에 해당되는 html 코드를 반환해준다.

2번 위치에 마우스를 가져가면 해당되는 태그 정보를 알려준다.

이제 파이썬 소스 코드를 작성하면서 중간 중간에 찍어보면서 원하는 결과를 추출하면 된다.

# 네이버 주식정보 가져오기 # BeautifulSoup은 HTML 과 XML 파일로부터 데이터를 수집하는 라이브러리 # pip install bs4 # pip install requests # pip install fake-useragent from bs4 import BeautifulSoup import requests from fake_useragent import UserAgent from datetime import datetime import time def getCode(company_code): # company_code : 기업코드 url = “https://finance.naver.com/item/main.nhn?code=” + company_code ua = UserAgent() # 헤더 정보 (http 해킷 헤더에 브라우저 정보가 존재하는지 확인할 경우) headers = { ‘User-agent’ : ua.ie } response = requests.get(url, headers = headers) soup = BeautifulSoup(response.content, “html.parser” ) return soup def getPrice(company_code): soup = getCode(company_code) # no_today = soup.find(“p”, {“class”: “no_today”}) no_today = soup.select_one( ‘p.no_today’ ) # print(no_today) # 출력을 한 다음에 더 세부적인 정보를 파싱처리한다. # blind = no_today.find(“span”, {“class” : “blind”}) blind = no_today.select_one( ‘span.blind’ ) return blind.text # 증시 기업코드 company_codes = [ “030200” , “005930” , “068270” , “035720” ] if __name__ = = ‘__main__’ : now = datetime.now() print ( “-” * 60 ) print (now) print ( “-” * 60 ) for elm in company_codes: nowPrice = getPrice(elm) print (nowPrice) print ( “-” * 60 )

결과 출력 화면

샘플 소스코드

crawling_10.py 0.00MB

파이썬 초간단 주식 정보 크롤링 예제 : BeautifulSoup(bs4) 이용

반응형

파이썬 네이버 주식 정보 크롤링 예시

이번 포스팅에서는 BeautifulSoup 모듈을 활용하여

매우 간단하게 네이버 주식 사이트의 정보를 크롤링해보는

예제를 다루어보도록 하겠습니다.

먼저 네이버 금융의 국내증시 사이트에 접속을 해보도록 하겠습니다.

금융 정보에 대한 굉장히 많은 정보가 있는데요.

여기서는 이 중 현재 코스피의 수치와 등락률을 대상으로

크롤링을 진행해보는 예제를 다루어보도록 하겠습니다.

참고로, 여기서는 크롬 브라우저를 기준으로 설명을 진행해보도록 하겠습니다.

(다른 브라우저들도 방법은 대체로 비슷합니다.)

개발자 도구를 열어 크롤링 준비

크롤링을 위하여 F12를 눌러 개발자 도구를 켠 뒤, 아래 그림의 파란색으로 표시한 부분의

화살표 모양 버튼을 클릭하여 크롤링 준비를 마치겠습니다.

BeautifulSoup 웹사이트 크롤링 준비

먼저 코스피 수치의 데이터를 가져오기 위하여 해당 값의 HTML태그를 분석해야 합니다.

아래 그림처럼 원하는 위치에 커서를 갖다대면, 해당 위치의 태그가 나타나게 됩니다.

두 가지 방법으로 코스피의 수치인 2967.82라는 값(변동 가능)에 접근이 가능합니다.

첫 번째는 span 클래스의 num 이름을 가지는 객체를 기준으로 삼는 것이고,

두 번째는 KOSPI.now라는 id 이름을 기준으로 삼는 것입니다.

두 방법의 예시를 보여드리기 전에, bs4 라이브러리에서 해당 웹페이지의 태그를

가져와 정보를 추출할 준비를 하도록 하겠습니다.

import urllib.request from bs4 import BeautifulSoup # 네이버 금융 국내증시 메인 사이트 주소 url = “https://finance.naver.com/sise/” # 웹사이트 정보 요청 page = urllib.request.urlopen(url) # 해당 페이지는 cp949 방식의 인코딩 사용 html = page.read().decode(‘cp949’) # html.parser로 html 형식 태그에서 데이터 추출 준비 soup = BeautifulSoup(html, ‘html.parser’)

다른 웹사이트에서는 ‘utf8’, ‘euc-kr’ 등의 인코딩 방식을 사용하는 경우도 있어,

이 부분은 시도를 여러번 해보시는 것이 좋습니다.

반응형

클래스 이름 기준 크롤링 방법 : select 메소드

span 클래스의 num 객체라는 정보를 사용한 경우는

select 메소드를 사용하여 가져올 수 있습니다.

아래처럼 코드를 작성하고 결과를 확인해보겠습니다.

soup.select(‘span.num’) # 결과 [@code@, 2,965.88, 987.57, 393.71]

span.num이라는 이름을 input으로 넣어주시면 됩니다.

여기서는 span 클래스의 num 객체가 총 4개가 존재하는데요.

이 중 2번째(1번 위치) 값이 저희가 추출을 원하는 값이기에,

인덱싱을 진행한 뒤, string 속성을 가져와 원하는 정보까지 도달해보겠습니다.

이후, 문자열 메소드로 천의 자리 수 콤마를 제거하고 float 자료형 변환까지 가능합니다.

soup.select(‘span.num’)[1] # 2,965.88 soup.select(‘span.num’)[1].string # 2,965.88 float(soup.select(‘span.num’)[1].string.replace(‘,’, ”)) # 2965.88(실수 숫자 자료형)

id 기준 크롤링 방법 : find 메소드

이번에는 KOSPI_now라는 id를 기준으로 크롤링을 진행해보겠습니다.

id를 기준으로 데이터를 가져올 때는 find 메소드를 사용하게 됩니다.

input으로 id = ‘KOSPI_now’ 처럼 지정해주시면 됩니다.

여기서는 해당 id를 가진 객체가 1개 뿐이라 결과가 바로 산출되었습니다.

이후, 위와 마찬가지로 string 속성을 가져와 원하는 데이터까지 도달 가능합니다.

soup.find(id = ‘KOSPI_now’) # 2,965.88 soup.find(id = ‘KOSPI_now’).string # ‘2,965.88’

심화 예제 : 코스피 등락률 크롤링

이번에는 약간 더 복잡한 형태로 작성되어 있는

코스피 등락률 정보를 가져와보도록 하겠습니다.

개발자 도구를 이용하여 KOSPI_change id를 가진 객체

혹은 span 클래스의 num_s 객체인 것을 확인하실 수 있습니다.

두 가지 모두 크롤링에서 사용 가능하나, 이번에는 id를 이용한 방법만 살펴보겠습니다.

soup.find(id = ‘KOSPI_change’) ”’ 38.50 +1.32%상승 ”’

find 메소드로 정보를 가져와보니 이번에는 ‘38.50 +1.32%’라는 정보와 ‘상승’이라는

두 가지 정보가 태그 내에 숨겨져 있는 것을 확인해볼 수 있었습니다.

이처럼 여러 태그가 동시에 얽혀 있다면, 바로 string 속성을 가져올 수는 없으며,

contents 속성을 통하여 세부 태그 정보에 각각 접근 후 string 속성을

적용해주시면 됩니다.

soup.find(id = ‘KOSPI_change’).contents ”’ [‘

‘, , ‘38.50 +1.32%’, 상승, ‘

‘]”’ soup.find(id = ‘KOSPI_change’).contents[2] # ‘38.50 +1.32%’ soup.find(id = ‘KOSPI_change’).contents[2].split() # [‘38.50’, ‘+1.32%’] soup.find(id = ‘KOSPI_change’).contents[3].string # ‘상승’

줄바꿈 기호를 포함하여 총 5개의 contents로 구성되어 있으며,

이 중 원하는 정보가 포함된 위치에 대하여 인덱싱을 진행해주시면 됩니다.

최종 string 자료형까지 도달한 이후에는 split 등 문자열 메소드를 적용하여

파싱을 이어서 진행해주시면 됩니다.

반응형

파이썬 네이버 종목토론방 크롤링

반응형

오늘은 파이썬을 활용하여 네이버 증권의 종목토론방의 글들을 크롤링해보겠습니다.

데이터 탐색 & 크롤링 작업

1. 웹사이트 탐색하기

▷ 사이트 바로가기 : https://finance.naver.com/item/board.naver?code=066970&page=1

– 크롤링할 때 중요한 점은 url이 특정 규칙으로 이루어져있는지와 해당 html을 면밀히 분석하여 필요한 데이터 값이 들어가 있는 구조를 파악하는 것입니다.

네이버 종목토론실: 엘앤에프

– URL 확인 결과, 끝부분의 code에는 종목코드가 할당되어 있고 page에는 해당 페이지가 몇번째인지 나와 있음

→ 페이지 부분에 숫자를 할당하여 반복문 생성

– 일정 이상의 조회수와 공감/비공감수에 따라 게시글을 필터링할 필요성 존재

– 날짜/제목/조회수/공감/비공감 Column으로 데이터 추출 (총 5개의 열)

2. 파이썬 크롤링 작업

– 크롤링을 할 때, 해당 사이트에서 컴퓨터로 인식해서 데이터 추출을 방해하는 경우가 있기에 User-Agent를 설정해서 사람으로 인식하게 해야 합니다.

– 추후 종목별로 사람들의 반응이 필요로 할 수도 있어 함수화

def NS_users_crawler(codes, page): # User-Agent 설정 headers = {‘User-Agent’: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36’} result_df = pd.DataFrame([]) n_ = 0 for page in range(1, page): n_ += 1 if (n_ % 10 == 0): print(‘================== Page ‘ + str(page) + ‘ is done ==================’) url = “https://finance.naver.com/item/board.naver?code=%s&page=%s” % (codes, str(page)) # html → parsing html = requests.get(url, headers=headers).content # 한글 깨짐 방지 decode soup = BeautifulSoup(html.decode(‘euc-kr’, ‘replace’), ‘html.parser’) table = soup.find(‘table’, {‘class’: ‘type2’}) tb = table.select(‘tbody > tr’) for i in range(2, len(tb)): if len(tb[i].select(‘td > span’)) > 0: date = tb[i].select(‘td > span’)[0].text title = tb[i].select(‘td.title > a’)[0][‘title’] views = tb[i].select(‘td > span’)[1].text pos = tb[i].select(‘td > strong’)[0].text neg = tb[i].select(‘td > strong’)[1].text table = pd.DataFrame({‘날짜’: [date], ‘제목’: [title], ‘조회’: [views], ‘공감’: [pos], ‘비공감’: [neg]}) result_df = result_df.append(table) return result_df

▣ 데이터 확인하기

data = NS_users_crawler(“066970”, 3) data.head(10)

날짜 제목 조회 공감 비공감 2022.06.04 17:34 블록딜 할인 물량 11 0 0 2022.06.04 16:40 ◆코이즈는 LG에너지솔루션의 상장과 앞으로 세계최대규모의 양극재 공장에 코이즈의 산화알미늄의 협력관계가 투자자들의 관심이 집중되고 있다. ◆ 41 0 3 2022.06.04 16:37 ◆코이즈 허접시총 세력이 마음만 먹으면 시총을 10바퀴를 돌려 버린다. ◆코이즈 거래량 핵폭발 ◆100년된 주식격언 주가를 보지 말고 거래량 28 0 2 2022.06.04 16:18 대구의 보석 141 7 2 2022.06.04 15:55 담주 94 4 1 2022.06.04 15:53 유로형 궁금한데요,,,, 76 1 2 2022.06.04 14:40 ■■■■변동성 확대구간. 102 1 8 2022.06.04 15:44 3개월 누적으로 개인만 매도함 57 3 0 2022.06.04 14:16 안티들은주말도없냐 90 3 2 2022.06.04 14:02 화요일장상승예감 256 5 2

– 이러한 형식으로 데이터를 수천개 추출하여 조회수가 일정 횟수 이상이며 공감/비공감도 페이지 당 최고 횟수를 기록한 값들만 필터링하여 의미 있는 값들을 도출하면 됩니다.

반응형

네이버증권 크롤링 활용 52주 최고가 대비 현재가격의 비율구하기

import requests from bs4 import BeautifulSoup def fin(a): url=’https://finance.naver.com/item/main.nhn?code=’+str(a) res=requests.get(url) a=res.text poe=a.find(’52주’) t=a[poe:poe+200] soup=BeautifulSoup(t,’html.parser’) max52=int((soup.em.string).replace(‘,’,”)) poe=a.find(‘현재가’) t=a[poe:poe+20].split(‘ ‘) ppt=t[1] pvalue=int(t[1].replace(‘,’,”)) poe=a.find(‘

종목명’) t=a[poe:poe+50].split(‘ ‘) y=t[1].split(‘

‘) tt=y[0] print(tt+” : “+str(ppt)+”원 (“+str(int(pvalue/max52*100))+”%)”) def mm(a): url=’https://finance.naver.com/item/main.nhn?code=’+str(a) res=requests.get(url) a=res.text poe=a.find(‘최저 :’ ) t=a[poe:poe+400] soup=BeautifulSoup(t,’html.parser’) max52=int((soup.em.string).replace(‘,’,”)) poe=a.find(‘현재가’) t=a[poe:poe+20].split(‘ ‘) ppt=t[1] pvalue=int(t[1].replace(‘,’,”)) poe=a.find(‘

종목명’) t=a[poe:poe+50].split(‘ ‘) y=t[1].split(‘

‘) tt=y[0] print(tt+” : “+str(ppt)+”원 (“+str(int(pvalue/max52*100))+”%)”) mm(“035720”) mm(“035420”) fin(“000660”) fin(“017670”) fin(“005380”) fin(“051910”) fin(“005490”) fin(“302440”) fin(“285130”) fin(“096770”)

실행 결과

카카오 : 150,000원 (86%)

NAVER : 429,000원 (92%)

SK하이닉스 : 103,500원 (68%)

SK텔레콤 : 293,500원 (86%)

현대차 : 209,500원 (72%)

LG화학 : 799,000원 (76%)

POSCO : 326,500원 (78%)

SK바이오사이언스 : 284,500원 (78%)

SK케미칼 : 280,000원 (59%)

SK이노베이션 : 243,000원 (74%)

네이버증권에서 크롤링하여 52주 최고가 대비 현재가격의 비율을 알려줍니다.

fin함수 뒤에 증권번호를 쓰면 됩니다. mm은 액면분할 등으로 최고가의 변동이 있을 때 쓰는 함수입니다.

파이썬 활용

1. 좀 더 쉽고 색다른 python 워드클라우드, stylecloud

2. 텍스트 파일 안의 스트링 개수 구하기

3. 이미지에 텍스트 새기기

4. 이미지에 텍스트 새기기 2탄, 유튜브 썸네일 만들기

반응형

키워드에 대한 정보 네이버 증권 크롤링

다음은 Bing에서 네이버 증권 크롤링 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보)

  • 네이버 금융 크롤링
  • 네이버 증권 크롤링
  • 네이버 주식 크롤링
  • 주식 데이터 크롤링
  • 파이썬 주식 크롤링
  • 실시간 주가 크롤링
  • 파이썬 네이버 주식 크롤링
  • 주가 크롤링
  • 주식 정보 크롤링
  • 파이썬 주가 크롤링
  • 네이버 주가 크롤링
  • 파이썬 주식 데이터 크롤링
  • 파이썬 네이버 금융 크롤링
  • 스타트코딩
  • 스타트코딩크롤링

네이버 #증권 #주식 #금융 #데이터 #크롤링 #하는법 #간단정리!! #(1편 #실시간 #주가 #정보)


YouTube에서 네이버 증권 크롤링 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보) | 네이버 증권 크롤링, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Comment