당신은 주제를 찾고 있습니까 “주식 크롤링 – 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보)“? 다음 카테고리의 웹사이트 you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: you.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 스타트코딩 이(가) 작성한 기사에는 조회수 5,036회 및 좋아요 64개 개의 좋아요가 있습니다.
주식 크롤링 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보) – 주식 크롤링 주제에 대한 세부정보를 참조하세요
안녕하세요. 초보자를 위한 쉬운 IT 교육 컨텐츠를 만드는 스타트코딩입니다.
이번 영상에서는 네이버 증권 크롤링 하는 방법을 알려드리겠습니다.
주식을 하다 보면 엑셀에 관심 종목이나
현재 가지고 있는 종목을 정리하는 데요.
실시간 주가 정보는 계속 바뀌기 때문에 수작업으로 바꾸어 줘야 합니다.
이는 매우 불편하고 시간이 걸리는 작업이죠.
웹크롤링을 이용하면 클릭 한번에 모든 종목의 실시간 주가 정보를 가지고 올 수 있습니다.
네이버 금융 크롤링을 따라 하면서 자동화의 묘미를 느껴보세요.
해당 강의는 인프런에서 무료로 수강할 수 있습니다 ^^
https://inf.run/SSPf
주식 크롤링 주제에 대한 자세한 내용은 여기를 참조하세요.
Chapter 4 크롤링 이해하기 | R을 이용한 퀀트 투자 포트폴리오 …
각종 금융 웹사이트에는 주가, 재무정보 등 우리가 원하는 대부분의 주식 정보가 제공되고 있으며, API를 활용할 수 없는 경우에도 크롤링을 통해 이러한 데이터를 …
Source: hyunyulhenry.github.io
Date Published: 8/27/2022
View: 8371
파이썬 초간단 주식 정보 크롤링 예제 : BeautifulSoup(bs4) 이용
파이썬 네이버 주식 정보 크롤링 예시 이번 포스팅에서는 BeautifulSoup 모듈을 활용하여 매우 간단하게 네이버 주식 사이트의 정보를 크롤링해보는 …
Source: jimmy-ai.tistory.com
Date Published: 6/2/2022
View: 5366
파이썬 주식 정보를 가져오는 방법 / 주가 정보 주식 크롤링 …
… 년 투자 열풍으로 주식에 관심을 가지신 분들이 많아지셨는데요 오늘은 파이썬과 네이버금융 (주식)을 이용해서 주식 종목 정보를 크롤링해서..
Source: hnm1.tistory.com
Date Published: 1/4/2021
View: 998
[크롤링기초] 네이버 주식 현재가 가져오기
[크롤링기초] 네이버 주식 현재가 가져오기. Link2Me 2021. 6. 25. 09:08. 320×100. 네이버 주식 정보 페이지에서 내가 원하는 정보만 가져오기 위해서 먼저 크롬 …Source: link2me.tistory.com
Date Published: 1/6/2021
View: 3052
네이버 주식창 웹크롤링 질문입니다. – 코딩애플 온라인 강좌
1. ‘웹크롤러 2 – 혼자 코드짤 때 도움되는 case study’ 강의 부분의 , 가 없는 요소 찾기에서 네이버 주식창 ‘동일업종 등락률’을 찾는 방법으로 …
Source: codingapple.com
Date Published: 5/5/2022
View: 2896
주제와 관련된 이미지 주식 크롤링
주제와 관련된 더 많은 사진을 참조하십시오 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
![네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보)](https://i.ytimg.com/vi/QlgQ_CCCWXM/maxresdefault.jpg)
주제에 대한 기사 평가 주식 크롤링
- Author: 스타트코딩
- Views: 조회수 5,036회
- Likes: 좋아요 64개
- Date Published: 2021. 9. 23.
- Video Url link: https://www.youtube.com/watch?v=QlgQ_CCCWXM
R을 이용한 퀀트 투자 포트폴리오 만들기(개정판)
일반적인 크롤링은 httr 패키지의 GET() 혹은 POST() 함수를 이용해 데이터를 다운로드한 후 rvest 패키지의 함수들을 이용해 원하는 데이터를 찾는 과정으로 이루어집니다. 이 CHAPTER에서는 GET 방식으로 금융 실시간 속보의 제목을 추출하는 예제, POST 방식으로 기업공시채널에서 오늘의 공시를 추출하는 예제, 태그와 속성, 페이지 내비게이션 값을 결합해 국내 상장주식의 종목명 및 티커를 추출하는 예제를 학습해 보겠습니다.
4.2.3 네이버 금융에서 주식티커 크롤링
태그와 속성, 페이지 내비게이션 값을 결합해 국내 상장주식의 종목명 및 티커를 추출하는 방법을 알아보겠습니다. 네이버 금융에서 [국내증시 → 시가총액] 페이지에는 코스피와 코스닥의 시가총액별 정보가 나타나 있습니다.
또한 종목명을 클릭해 이동하는 페이지의 URL을 확인해보면, 끝 6자리가 각 종목의 거래소 티커임도 확인이 됩니다.
티커 정리를 위해 HTML에서 확인해야 할 부분은 총 두 가지입니다. 먼저 하단의 페이지 내비게이션을 통해 코스피와 코스닥 시가총액에 해당하는 페이지가 각각 몇 번째 페이지까지 있는지 알아야 합니다. 아래와 같은 항목 중 [맨뒤]에 해당하는 페이지가 가장 마지막 페이지입니다.
[맨뒤]에 마우스 커서를 올려두고 마우스 오른쪽 버튼을 클릭한 후 [검사]를 선택하면 개발자 도구 화면이 열립니다. 여기서 해당 글자가 HTML 내에서 어떤 부분에 위치하는지 확인할 수 있습니다. 해당 링크는 pgRR 클래스 → a 태그 중 href 속성에 위치하며, page= 뒷부분의 숫자에 위치하는 페이지로 링크가 걸려 있습니다.종목명 링크에 해당하는 주소 중 끝 6자리는 티커에 해당합니다. 따라서 각 링크들의 주소를 알아야 할 필요도 있습니다.
삼성전자에 마우스 커서를 올려둔 후 마우스 오른쪽 버튼을 클릭하고 [검사]를 선택합니다. 개발자 도구 화면을 살펴보면 해당 링크가 tbody → td → a 태그의 href 속성에 위치하고 있음을 알 수 있습니다.
위 정보들을 이용해 데이터를 다운로드하겠습니다. 아래 코드에서 i = 0일 경우 코스피에 해당하는 URL이 생성되고, i = 1일 경우 코스닥에 해당하는 URL이 생성됩니다. 먼저 코스피에 해당하는 데이터를 다운로드하겠습니다.
library (httr) (httr) library (rvest) (rvest) i = 0 = list () ticker() = paste0 ( ‘https://finance.naver.com/sise/’ , url ‘sise_market_sum.nhn?sosok=’ ,i, ‘&page=1’ ) ,i, = GET (url) down_table(url)
빈 리스트인 ticker 변수를 만들어줍니다. paste0() 함수를 이용해 코스피 시가총액 페이지의 url을 만듭니다. GET() 함수를 통해 해당 페이지 내용을 받아 down_table 변수에 저장합니다.
가장 먼저 해야 할 작업은 마지막 페이지가 몇 번째 페이지인지 찾아내는 작업입니다. 우리는 이미 개발자 도구 화면을 통해 해당 정보가 pgRR 클래스의 a 태그 중 href 속성에 위치하고 있음을 알고 있습니다.
= read_html (down_table, encoding = ‘EUC-KR’ ) %>% navi.final(down_table, html_nodes (., ‘.pgRR’ ) %>% (., html_nodes (., ‘a’ ) %>% (., html_attr (., ‘href’ ) (.,
read_html() 함수를 이용해 해당 페이지의 HTML 내용을 읽어오며, 인코딩은 EUC-KR로 설정합니다. html_nodes() 함수를 이용해 pgRR 클래스 정보만 불러오며, 클래스 속성이므로 앞에 마침표(.)를 붙입니다. html_nodes() 함수를 통해 a 태그 정보만 불러옵니다. html_attr() 함수를 통해 href 속성을 불러옵니다.
이를 통해 navi.final에는 해당 부분에 해당하는 내용이 저장됩니다.
print (navi.final) (navi.final)
## [1] “/sise/sise_market_sum.nhn?sosok=0&page=35”
이 중 우리가 알고 싶은 내용은 page= 뒤에 있는 숫자입니다. 해당 내용을 추출하는 코드는 다음과 같습니다.
= navi.final %>% navi.finalnavi.final strsplit (., ‘=’ ) %>% (., unlist () %>% () tail (., 1 ) %>% (., as.numeric () ()
strsplit() 함수는 전체 문장을 특정 글자 기준으로 나눕니다. page= 뒷부분 의 데이터만 필요하므로 =를 기준으로 문장을 나눠줍니다. unlist() 함수를 통해 결과를 벡터 형태로 변환합니다. tail() 함수를 통해 뒤에서 첫 번째 데이터만 선택합니다. as.numeric() 함수를 통해 해당 값을 숫자 형태로 바꾸어줍니다.
print (navi.final) (navi.final)
## [1] 35
코스피 시가총액 페이지는 35번째 페이지까지 있으며, for loop 구문을 이용하면 1페이지부터 navi.final, 즉 35 페이지까지 모든 내용을 읽어올 수 있습니다. 먼저 코스피의 첫 번째 페이지에서 우리가 원하는 데이터를 추출하는 방법을 살펴보겠습니다.
i = 0 # 코스피 j = 1 # 첫번째 페이지 = paste0 ( ‘https://finance.naver.com/sise/’ , url ‘sise_market_sum.nhn?sosok=’ ,i, “&page=” ,j) ,i,,j) = GET (url) down_table(url)
i와 j에 각각 0과 1을 입력해 코스피 첫 번째 페이지에 해당하는 url을 생성합니다. GET() 함수를 이용해 해당 페이지의 데이터를 다운로드합니다.
Sys.setlocale ( “LC_ALL” , “English” ) = read_html (down_table, encoding = “EUC-KR” ) %>% table(down_table, html_table ( fill = TRUE ) = table[[ 2 ]] tabletable[[]] Sys.setlocale ( “LC_ALL” , “Korean” )
Sys.setlocale() 함수를 통해 로케일 언어를 English로 설정합니다. read_html() 함수를 통해 HTML 정보를 읽어옵니다. html_table() 함수를 통해 테이블 정보를 읽어오며, fill=TRUE를 추가해줍니다. table 변수에는 리스트 형태로 총 세 가지 테이블이 저장되어 있습니다. 첫 번째 리스트에는 거래량, 시가, 고가 등 적용 항목이 저장되어 있고 세 번째 리스트에는 페이지 내비게이션 테이블이 저장되어 있으므로, 우리에게 필요한 두 번째 리스트만을 table 변수에 다시 저장합니다. 한글을 읽기 위해 Sys.setlocale() 함수를 통해 로케일 언어를 다시 Korean으로 변경합니다.
저장된 테이블 내용을 확인하면 다음과 같습니다.
print ( head (table)) (table))
## # A tibble: 6 x 13 ## N 종목명 현재가 전일비 등락률 액면가 시가총액 상장주식수 외국인비율 거래량 ##
## 1 NA “” “” “” “” “” “” “” NA “” ## 2 1 “삼성~ “77,0~ “200” “+0.2~ “100” “4,596,~ “5,969,78~ 51.8 “10,9~ ## 3 2 “SK하~ “121,~ “500” “-0.4~ “5,00~ “880,88~ “728,002” 48.7 “2,18~ ## 4 3 “NAVE~ “392,~ “1,50~ “+0.3~ “100” “643,91~ “164,263” 56.5 “318,~ ## 5 4 “삼성~ “890,~ “18,0~ “+2.0~ “2,50~ “588,86~ “66,165” 10.8 “74,6~ ## 6 5 “삼성~ “70,4~ “0” “0.00~ “100” “579,31~ “822,887” 74.6 “787,~ ## # … with 3 more variables: PER , ROE , 토론실 이 중 마지막 열인 토론실은 필요 없는 열이며, 첫 번째 행과 같이 아무런 정보가 없는 행도 있습니다. 이를 다음과 같이 정리해줍니다.
ncol (table)] = NULL table[,(table)] = na.omit (table) table(table) print ( head (table)) (table))
## # A tibble: 6 x 12 ## N 종목명 현재가 전일비 등락률 액면가 시가총액 상장주식수 외국인비율 거래량 ##
## 1 1 삼성~ 77,000 200 +0.26% 100 4,596,7~ 5,969,783 51.8 10,94~ ## 2 2 SK하~ 121,0~ 500 -0.41% 5,000 880,883 728,002 48.7 2,183~ ## 3 3 NAVER 392,0~ 1,500 +0.38% 100 643,912 164,263 56.5 318,8~ ## 4 4 삼성~ 890,0~ 18,000 +2.06% 2,500 588,868 66,165 10.8 74,632 ## 5 5 삼성~ 70,400 0 0.00% 100 579,312 822,887 74.6 787,4~ ## 6 6 카카오 118,5~ 1,500 -1.25% 100 528,255 445,785 31.0 1,711~ ## # … with 2 more variables: PER , ROE 이제 필요한 정보는 6자리 티커입니다. 티커 역시 개발자 도구 화면을 통해 tbody → td → a 태그의 href 속성에 위치하고 있음을 알고 있습니다. 티커를 추출하는 코드는 다음과 같습니다.
= read_html (down_table, encoding = ‘EUC-KR’ ) %>% symbol(down_table, html_nodes (., ‘tbody’ ) %>% (., html_nodes (., ‘td’ ) %>% (., html_nodes (., ‘a’ ) %>% (., html_attr (., ‘href’ ) (., print ( head (symbol, 10 )) (symbol,))
## [1] “/item/main.naver?code=005930” “/item/board.naver?code=005930” ## [3] “/item/main.naver?code=000660” “/item/board.naver?code=000660” ## [5] “/item/main.naver?code=035420” “/item/board.naver?code=035420” ## [7] “/item/main.naver?code=207940” “/item/board.naver?code=207940” ## [9] “/item/main.naver?code=005935” “/item/board.naver?code=005935”
read_html() 함수를 통해 HTML 정보를 읽어오며, 인코딩은 EUC-KR로 설정합니다. html_nodes() 함수를 통해 tbody 태그 정보를 불러옵니다. 다시 html_nodes() 함수를 통해 td와 a 태그 정보를 불러옵니다. html_attr() 함수를 이용해 href 속성을 불러옵니다.
이를 통해 symbol에는 href 속성에 해당하는 링크 주소들이 저장됩니다. 이 중 마지막 6자리 글자만 추출하는 코드는 다음과 같습니다.
library (stringr) (stringr) = sapply (symbol, function (x) { symbol(symbol,(x) { str_sub (x, – 6 , – 1 ) (x, }) print ( head (symbol, 10 )) (symbol,))
## /item/main.naver?code=005930 /item/board.naver?code=005930 ## “005930” “005930” ## /item/main.naver?code=000660 /item/board.naver?code=000660 ## “000660” “000660” ## /item/main.naver?code=035420 /item/board.naver?code=035420 ## “035420” “035420” ## /item/main.naver?code=207940 /item/board.naver?code=207940 ## “207940” “207940” ## /item/main.naver?code=005935 /item/board.naver?code=005935 ## “005935” “005935”
sapply() 함수를 통해 symbol 변수의 내용들에 function() 을 적용하며, stringr 패키지의 str_sub() 함수를 이용해 마지막 6자리 글자만 추출합니다.
결과를 살펴보면 티커에 해당하는 마지막 6글자만 추출되지만 동일한 내용이 두 번 연속해 추출됩니다. 이는 main.nhn?code=에 해당하는 부분은 종목명에 설정된 링크, board.nhn?code=에 해당하는 부분은 토론실에 설정된 링크이기 때문입니다.
= unique (symbol) symbol(symbol) print ( head (symbol, 10 )) (symbol,))
## [1] “005930” “000660” “035420” “207940” “005935” “035720” “051910” “006400” ## [9] “005380” “000270”
unique() 함수를 이용해 중복되는 티커를 제거하면 우리가 원하는 티커 부분만 깔끔하게 정리됩니다. 해당 내용을 위에서 구한 테이블에 입력한 후 데이터를 다듬는 과정은 다음과 같습니다.
$ N = symbol tablesymbol colnames (table)[ 1 ] = ‘종목코드’ (table)[ rownames (table) = NULL (table) = table ticker[[j]]table
위에서 구한 티커를 N열에 입력합니다. 해당 열 이름을 종목코드로 변경합니다. na.omit() 함수를 통해 특정 행을 삭제했으므로, 행 이름을 초기화해줍니다. ticker의 j번째 리스트에 정리된 데이터를 입력합니다.
위의 코드에서 i와 j 값을 for loop 구문에 이용하면 코스피와 코스닥 전 종목의 티커가 정리된 테이블을 만들 수 있습니다. 이를 전체 코드로 나타내면 다음과 같습니다.
파이썬 초간단 주식 정보 크롤링 예제 : 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 등 문자열 메소드를 적용하여
파싱을 이어서 진행해주시면 됩니다.
반응형
파이썬 주식 정보를 가져오는 방법 / 주가 정보 주식 크롤링 beautifulsoup 사용 방법
How to Python Stock Crawling
안녕하세요
2020년부터 시작해서 2021년 투자 열풍으로 주식에 관심을 가지신 분들이 많아지셨는데요
오늘은 파이썬과 네이버금융 (주식)을 이용해서 주식 종목 정보를 크롤링해서
원하는 정보를 뽑아오는 방법에 대해서 알아보겠습니다
상세하게는 네이버 증권의 주식 인기 검색 목록을 불러오는 방법에 대해서 알아보도록하겠습니다
불러올 페이지의 정보는 아래와 같습니다
네이버 증권 사이트의 홈 페이지 입니다
주식을 하시는 분들이라면 한번쯤 보셨을 사이트 입니다
국개 증시의 주요 뉴스와 주식의 세부적인 정보들을 잘아보기 쉽게 해놓은 사이트 입니다
https://finance.naver.com/
네이버 증권
홈페이지에 들어오시면 이런 모습을 보실 수 있습니다
코스피 지수가 우 상향을 하는 모습을 볼 수 있네요
제 블로그도 우상향 중입니다
먼저 크롤링이 가능한지 확인부터 하셔야합니다
사이트 들은 robots 으로 외부 봇들이 활동을 할 수 있게 할 것인지 거부할 것인지 정의할 수 있습니다
네이버 증권도 사이트 관리자가 정해두었겠죠?
보통 사이트 URL 뒤에 /robots.txt 를 붙여 보시면 나옵니다
https://finance.naver.com/robots.txt
Disallow, allow 허용할건지 안할건지 나오게 됩니다
/ 는 전체라고 보시면 되는데
Allow 가능한 사이트가 몇개 보이네요
그 중 저는 /sise/ 를 사용하도록 하겠습니다
https://finance.naver.com/sise/
sise 를 보니 국내증시를 나타낸 사이트네요
코스피, 코스닥, 코스피200 등의 지수들을 볼 수 있고
여러 정보들도 많이 확인할 수 있네요
여기서 저는 우측에 있는 인기 검색 종목 을 크롤링해서 사용해 보도록 하겠습니다
역시 삼성전자가 항상 1등을 차지하고 있는 것을 볼 수 있네요
화제의 카카오도 있고 아쉽게 이 순간에는 네이버는 보이지 않네요
여기서 저는 1. 삼성전자 가격 이런식으로 텍스트로 된 정보들을 전부 가져오도록 하겠습니다
먼저 개발자 도구(F12)를 열어 줍니다 여기서 Elements 로 들어가서
크롤링을 원하는 곳을 ctrl + shift + c 를 눌러서 원하는 객체를 select 해줍니다
참 쉽죠
import requests from bs4 import BeautifulSoup req = requests.get(‘https://finance.naver.com/sise/’) html = req.text soup = BeautifulSoup(html, ‘html.parser’) my_stock = soup.select( ‘.lst_pop’ ) for stock_name in my_stock: print(stock_name.text)
코드를 선 공개 하도록 하겠습니다
사실 하나하나 하기에는 간단하기도 하고 이해하는데 어렵습니다
크롤링은 beautifulsoup 라는 패키지로 많이들 하게 되는데요
코드 설명 드리겠습니다
1 2 3 4 5 6 7 8 9 10 11 12 13 import requests # requests 패키지 import from bs4 import BeautifulSoup # beautilfulsoup4 패키지 import req = requests.get( ‘https://finance.naver.com/sise/’ ) # requests.get으로 url의 html 정보들을 가져옵니다 html = req.text # html 정보에서 text 정보만 빼서 html 변수에 넣어 줍시다 soup = BeautifulSoup(html, ‘html.parser’ ) # html.parser 로 파싱해 줍니다 my_stock = soup.select( # 여기가 제일 중요한 부분입니다 my_stock 변수에 select 할 정보를 찾아서 넣어줍니다 ‘.lst_pop’ ) for stock_name in my_stock: # select 한 정보를 한줄한줄 print 하기 위해 for 문을 이용합니다 print (stock_name.text) cs
우선 사용자 분이 가져와야할 부분이
soup.select 에서
.lst_pop 입니다
가져오는 방법을 알려드리겠습니다
크로미움의 개발자도구로 가져와야 합니다
class 로 묶여있네요
클래스는 .lst_pop 로 쩜을 이용해 사용할 수 있습니다
실행해 보시면 정상적으로 불러와진 것을 볼 수 있습니다
저는 class 만 불러왔지만 더 상세하게 1. 만, 삼성전자 부분만, 가격부분만 불러오고 싶으시다면
클래스안에 id 나 태그 부분까지 입력해서 가져오시면 됩니다
궁금하신점은 댓글 남겨주시고 좋아요, 구독 부탁드립니다
2020.12.21 – [Python] – 파이썬 구글 이미지 크롤링 강의 / 연예인 사진 수집 / 이미지 크롤링 방법 / Selenium 사용법
소소한 일상 및 업무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
네이버 주식창 웹크롤링 질문입니다.
안녕하세요. 1. ‘웹크롤러 2 – 혼자 코드짤 때 도움되는 case study’ 강의 부분의 class, id가 없는 요소 찾기에서 네이버 주식창 ‘동일업종 등락률’을 찾는 방법으로 마우스 우클릭 -> copy -> copy selecor해서 soup.select(”)에 넣어 찾으니 에러 납니다. NoneType 오브젝트는 callable 하지 않다고 나오는데 원인이 무엇일가요?
<소스 코드> import requests from bs4 import BeautifulSoup 데이터 = requests.get(‘https://finance.naver.com/item/sise.nhn?code=005930’) soup = BeautifulSoup(데이터.content, ‘html.parser’) soup.selector(‘#tab_con1 > div:nth-child(6) > table > tbody > tr:nth-child(2) > td > em’) <실행 결과>
TypeError Traceback (most recent call last)
in 5 6 soup = BeautifulSoup(데이터.content, ‘html.parser’) —-> 7 soup.selector(‘#tab_con1 > div:nth-child(6) > table > tbody > tr:nth-child(2) > td > em’) TypeError: ‘NoneType’ object is not callable 2. 위와 비슷한 내용인데 soup.select(‘.gray .f_down em’)[0]까지 하면 잘 출력되는데 soup.select(‘.gray .f_down em’)[0].text하면 목표한 데이터가 아니라 줄바꿈 명령 등과 같이 함께 나오는데 어떻게 하면 될까요? <소스코드>
import requests from bs4 import BeautifulSoup 데이터 = requests.get(‘https://finance.naver.com/item/sise.nhn?code=005930’) soup = BeautifulSoup(데이터.content, ‘html.parser’) soup.select(‘.gray .f_down em’)[0] soup.select(‘.gray .f_down em’)[0].text < 출력결과 : soup.select('.gray .f_down em')[0]> -1.16%
< 출력결과 : soup.select('.gray .f_down em')[0].text > ‘
\t\t\t\t-1.27%
\t\t\t\t’
키워드에 대한 정보 주식 크롤링
다음은 Bing에서 주식 크롤링 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보)
- 네이버 금융 크롤링
- 네이버 증권 크롤링
- 네이버 주식 크롤링
- 주식 데이터 크롤링
- 파이썬 주식 크롤링
- 실시간 주가 크롤링
- 파이썬 네이버 주식 크롤링
- 주가 크롤링
- 주식 정보 크롤링
- 파이썬 주가 크롤링
- 네이버 주가 크롤링
- 파이썬 주식 데이터 크롤링
- 파이썬 네이버 금융 크롤링
- 스타트코딩
- 스타트코딩크롤링
네이버 #증권 #주식 #금융 #데이터 #크롤링 #하는법 #간단정리!! #(1편 #실시간 #주가 #정보)
YouTube에서 주식 크롤링 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 네이버 증권 주식 금융 데이터 크롤링 하는법 간단정리!! (1편 실시간 주가 정보) | 주식 크롤링, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.