본문 바로가기

R 크롤링

네이버 금융 크롤링 in R

반응형

https://stat-and-news-by-daragon9.tistory.com/107

 

[R크롤링] 4. 네이버 증권에서 삼성전자 주식 일별 시세 가져오기

## 작성일: 2017.12.16 ## 작성자: 춤추는초코칩 ## 네이버 증권에서 삼성전자 일별 시세 가져오기 # 작업폴더 경로 확인 getwd() # 저장할 폴더 지정 setwd("D:/R/R과Java로 크롤링하자") getwd() # 패키지 인스.

stat-and-news-by-daragon9.tistory.com

## 작성일: 2022.02.23

## 작성자: 춤추는초코칩

## 네이버 금융 크롤링 in R

 

지난 포스트 후 4년이 지났습니다. 댓글 중에 네이버에서 막은 거 같다는 의견이 있어 확인해 봤습니다.

우선 "네이버 금융 크롤링"으로 검색하니 연관 검색어에 "막힘", "불법", "차단"이 연관검색어로 검색이 됩니다.

https://github.com/INVESTAR/StockAnalysisInPython

 

GitHub - INVESTAR/StockAnalysisInPython

Contribute to INVESTAR/StockAnalysisInPython development by creating an account on GitHub.

github.com

검색된 내용을 살펴보니, 네이버가 2021년 1월 7일 저녁부터 네이버 금융에서 웹 크롤러의 스크레이핑을 차단하기 시작했다고 합니다. 그리고 본문에 웹 스크레이핑을 하려면 웹 브라우저 정보(User-Agent)를 보내야 한다고 합니다.

그래서, 웹 브라우저 정보(User-Agent)에 대해 알아봤습니다.

https://blog.naver.com/kiddwannabe/221185808375

 

크롤링) 접속 차단되었을때 User-Agent지정(header)

User-Agent 자동 입력 및 자동 변경에 대해 살펴보실 분들은 아래 글을 봐주세요 (2020.08.27) 뭐야? 너 ...

blog.naver.com

네이버 서버에서 봇으로 인지하고 원하는 정보를 제공하지 않은 것 같습니다. 여기서, User-Agent 용어가 등장합니다. User-Agent란 사용자의 소프트웨어 식별 정보를 담고 있습니다. R에서 User-Agent를 설정해서 자료를 조회해보겠습니다. 다행히, httr이라는 패키지에 User-Agent를 설정할 수 있는 방법이 있을 거 같습니다.

https://stackoverflow.com/questions/66975138/change-user-agent-when-using-rvestread-html

 

Change user agent when using rvest::read_html

I am able to change the user agent using the httr package and create a session with the new user agent. However I am not sure how to use this new user agent with the read_html function to get the h...

stackoverflow.com

우선, 나의 User-Agent 정보를 확인합니다. 브라우저에 아래 주소를 입력해서 확인합니다.

http://httpbin.org/user-agent

저의 경우 이렇게 조회됩니다. 이제 코딩하고 조회가 되는지 확인해보겠습니다.

# 패키지 인스톨

# install.packages("rvest")
# install.packages("R6")
# install.packages("httr")

# 라이브러리 불러오기

library("rvest")
library("R6")
library("httr")

# user_agent 확인URL: http://httpbin.org/user-agent
# user_agent 설정하기
ua <- "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"

# naver 금융 사이트 설정
url <- 'http://finance.naver.com/item/sise_day.nhn?code=005930&page=1'

# 자료가져오기(기존코드)
url %>% read_html() %>% html_nodes('.type2')

# 자료가져오기(신규코드)
price <- GET(url, user_agent(ua)) %>% read_html() %>% html_nodes('.type2') %>% html_table

# dataframe으로 변환하기
stock_price <- data.frame(price)

stock_price

정상적으로 자료가 조회되는 것을 확인할 수 있습니다. 코드도 기존에 비해 훨씬 깔끔해져서 마음에 듭니다.

크롤링에 도움이 되셨으면 좋겠습니다.

반응형