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

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

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

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

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

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

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

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

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

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

+ 여기를 클릭

Source: appia.tistory.com

Date Published: 7/25/2022

View: 5196

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

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

+ 여기에 자세히 보기

Source: cocoabba.tistory.com

Date Published: 1/7/2022

View: 907

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

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

+ 여기에 자세히 보기

Source: contents.premium.naver.com

Date Published: 7/19/2022

View: 5840

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

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

+ 여기를 클릭

Source: link2me.tistory.com

Date Published: 12/13/2021

View: 2530

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

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

+ 여기에 더 보기

Source: bigdata-doctrine.tistory.com

Date Published: 11/19/2022

View: 2143

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

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

+ 여기에 표시

Source: jimmy-ai.tistory.com

Date Published: 3/27/2021

View: 5059

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

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

+ 더 읽기

Source: codingspooning.tistory.com

Date Published: 12/28/2021

View: 9182

[Python] 네이버 금융 주식 정보 가져오기 (ex. 삼성전자)

목차 [Python] 네이버 금융 주식 정보 가져오기 : pykrx 모듈 소개 BS4나 Selenium이나 Pandas의 html read 함수를 사용해서 주식 정보를 가져오려고 …

+ 여기에 표시

Source: scribblinganything.tistory.com

Date Published: 8/16/2022

View: 3967

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

주제와 관련된 더 많은 사진을 참조하십시오 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (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)

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

반응형

[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시간을 넘게 작성하고 있다.

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

반응형

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

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

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

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

[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

파이썬 초간단 주식 정보 크롤링 예제 : 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

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

반응형

[Python] 네이버 금융 주식 정보 가져오기 (ex. 삼성전자)

반응형

목차

[Python] 네이버 금융 주식 정보 가져오기 : pykrx 모듈 소개

BS4나 Selenium이나 Pandas의 html read 함수를 사용해서 주식 정보를 가져오려고 시도 했다면 그 과정이 만만치 않음을 알 수 있습니다.

pykrx 모듈은 네이버금융(Naver finance)와 KRX 정보 데이터 시스템에서 주가 정보를 지속적으로 스크래핑(scraping) 하고 Github에서 업데이트 해줍니다.

해당 API를 사용하면 단 한줄로 주가 정보를 쉽게 가져 올 수 있습니다. pykrx의 상세 사용법을 알고 싶다면 위에 링크를 클릭해서 확인하시면 됩니다.

pykrx를 사용하기 위해서는 아래와 같이 설치를 해주어야 합니다.

pip install pykrx

[Python] 네이버 금융 주식 정보 가져오기 : get_market_ohlcv_by_date (삼성전자)

삼성전자의 Ticker 번호를 우선 확인해야 합니다. 번호는 네이버 금융에서 삼성전자를 검색하시면

위 그림처럼 “005930”이라는 번호를 확인할 수 있는데 이는 삼성전자 주식에 대한 고유 번호로 생각하시면 됩니다.

코드>>

from pykrx import stock data = stock.get_market_ohlcv_by_date(“20200101”, “20211107”, “005930”) print(data)

결과>>

시가 고가 저가 종가 거래량 날짜 2020-01-02 55500 56000 55000 55200 12993228 2020-01-03 56000 56600 54900 55500 15422255 2020-01-06 54900 55600 54600 55500 10278951 2020-01-07 55700 56400 55600 55800 10009778 2020-01-08 56200 57400 55900 56800 23501171 … … … … … … 2021-11-01 70200 70600 69900 69900 11503729 2021-11-02 70800 72200 70700 71500 16812570 2021-11-03 71700 71700 70100 70400 12770428 2021-11-04 71200 71600 70500 70600 11818987 2021-11-05 71600 71600 70200 70200 12605513 [457 rows x 5 columns]

반응형

주석>>

3번 라인 : get_market_ohlcv_by_date 함수를 사용해서 시가, 고가, 저가, 종가, 거래량 정보를 불러 옵니다. 입력 값으로 불러올 주가의 시작일, 종료일, Ticker 번호 를 입력합니다.

결과에서 확인할 수 있듯이 Pandas Dataframe 형태로 결과가 나옵니다. Dataframe을 이용한 편집 및 사용방법은 아래 링크를 참조하시길 바랍니다.

[Python] 네이버 금융 주식 정보 가져오기 : get_market_fundamental_by_date (삼성전자)

이번에는 재무제표에서 투자의 가장 핵심 요소들인 BPS, PER, PBR, EPS, DIV, DPS 값을 불러오는 함수에 대해 알아 보겠습니다.

코드>>

from pykrx import stock data = stock.get_market_fundamental_by_date(“20200101”, “20211107”, “005930”) print(data)

결과>>

BPS PER PBR EPS DIV DPS 날짜 2020-01-02 35342 8.54 1.56 6461 2.57 1416 2020-01-03 35342 8.59 1.57 6461 2.55 1416 2020-01-06 35342 8.59 1.57 6461 2.55 1416 2020-01-07 35342 8.64 1.58 6461 2.54 1416 2020-01-08 35342 8.79 1.61 6461 2.49 1416 … … … … … … … 2021-11-01 39406 18.20 1.77 3841 4.28 2994 2021-11-02 39406 18.61 1.81 3841 4.19 2994 2021-11-03 39406 18.33 1.79 3841 4.25 2994 2021-11-04 39406 18.38 1.79 3841 4.24 2994 2021-11-05 39406 18.28 1.78 3841 4.26 2994 [457 rows x 6 columns]

주석>>

사용방법은 함수만 다르고 입력 방식은 동일 합니다.

[Python] 네이버 금융 주식 정보 가져오기 : 삼성전자 종가, PER 변화 그래프로 그리기

앞서 get_market_fundamental_by_date 함수를 사용해서 EPS 정보를 가져올 수 있었습니다. 이번에는 가져온 EPS 정보를 통해 Matplotlib 모듈을 사용해서 그래프를 그려보도록 하겠습니다.

코드>>

from pykrx import stock data0 = stock.get_market_ohlcv_by_date(“20200101”, “20211107”, “005930”) data1 = stock.get_market_fundamental_by_date(“20200101”, “20211107”, “005930”) import matplotlib.pyplot as plt plt.subplot(211) plt.plot(data0.index, data0[‘종가’], color = “green”, label=’삼전주가’) plt.ylabel(“Close Value”) plt.legend() plt.subplot(212) plt.plot(data1.index, data1[“PER”], color = “brown”, label = “삼전PER”) plt.ylabel(“PER”) plt.legend() plt.show()

결과>>

반응형

키워드에 대한 정보 네이버 주식 크롤링

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

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

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

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

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


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

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

Leave a Comment