https://stat-and-news-by-daragon9.tistory.com/107
## 작성일: 2022.02.23
## 작성자: 춤추는초코칩
## 네이버 금융 크롤링 in R
지난 포스트 후 4년이 지났습니다. 댓글 중에 네이버에서 막은 거 같다는 의견이 있어 확인해 봤습니다.
우선 "네이버 금융 크롤링"으로 검색하니 연관 검색어에 "막힘", "불법", "차단"이 연관검색어로 검색이 됩니다.
https://github.com/INVESTAR/StockAnalysisInPython
검색된 내용을 살펴보니, 네이버가 2021년 1월 7일 저녁부터 네이버 금융에서 웹 크롤러의 스크레이핑을 차단하기 시작했다고 합니다. 그리고 본문에 웹 스크레이핑을 하려면 웹 브라우저 정보(User-Agent)를 보내야 한다고 합니다.
그래서, 웹 브라우저 정보(User-Agent)에 대해 알아봤습니다.
https://blog.naver.com/kiddwannabe/221185808375
네이버 서버에서 봇으로 인지하고 원하는 정보를 제공하지 않은 것 같습니다. 여기서, User-Agent 용어가 등장합니다. User-Agent란 사용자의 소프트웨어 식별 정보를 담고 있습니다. R에서 User-Agent를 설정해서 자료를 조회해보겠습니다. 다행히, httr이라는 패키지에 User-Agent를 설정할 수 있는 방법이 있을 거 같습니다.
https://stackoverflow.com/questions/66975138/change-user-agent-when-using-rvestread-html
우선, 나의 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
정상적으로 자료가 조회되는 것을 확인할 수 있습니다. 코드도 기존에 비해 훨씬 깔끔해져서 마음에 듭니다.
크롤링에 도움이 되셨으면 좋겠습니다.
'R 크롤링' 카테고리의 다른 글
네이버 영화 리뷰 크롤링 in R (4) | 2019.07.23 |
---|---|
오픈API를 활용한 대기오염정보 조회(5) (0) | 2019.06.13 |
[R] 디아블로3 API(6): 직업별 상위 100위 아이템 히스토그램 (0) | 2018.03.24 |
[R] 디아블로3 API를 활용하여 직업별 상위 랭킹 세팅 분포 구하기 다섯번째날 (0) | 2018.03.23 |
[R] 디아블로3 API를 활용하여 직업별 상위 랭킹 세팅 분포 구하기 네번째날 (0) | 2018.03.19 |