https://developers.naver.com/main/

     

    NAVER Developers

    네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

    developers.naver.com

    Application 메뉴 => 등록 네이버 오픈 API키 발급 받기

    Documents 메뉴 => 네이버 오픈 API 종류

    R 버전 3.6.3

     

     

    RLab01 

    # 네이버 오픈 API
    # 네이버에는 뉴스,쇼핑,블로그,카페,지식in,전문자료,영화,책 등 다양한 정보 제공하는 메뉴들이 있음.
    # 이런 정보들을 쉽게 받아볼수 있도록 오픈API를 제공함.
    # API이용신청 => API이용신청 승인 => API호출 => 결과
    
    # 필요한 패키지
    # Rcurl : 일반적인 HTTP 요청(다운로드)
    # Remcabko : 한글 문장의 형태소 분석
    # wordcloud : 워드 클라우드 출력
    # XML : 로컬, 웹에 연결된 XML, HTML문서 읽음.
    
    # 네이버 오픈 API키 발급 받기
    # Client ID : 
    # Client Secret : 
    
    # 뉴스검색 : "인공지능" 키워드
    
    # 1)API 설정 
    # 2)URL 작성
    # 3)문서 다운로드 : getURL()
    # 4)XML 문서구조로 변환 : xmlparse()
    # 5)뉴스 내용 추출 : xpathsApply()
    # 6)데이터 정제 : gsub()
    # 7)단어 추출 : nouns()
    # 8)단어 빈도분석 : table()
    # 9)워드 클라우드 출력 : wordcloud()
    
    install.packages("RCurl")
    # install.packages("XML")
    # install.packages("wordcloud")
    install.packages("RmecabKo")
    library(RCurl)
    library(XML)
    library(wordcloud)
    library(RmecabKo)
    
    # RmecabKo 패키지에서 사용하는 형태소 기본 기능 설치 => 폴더가 자동 생성됨.
    install_mecab("C:/Rlibs/mecab")
    library(RmecabKo)
    
    # API설정 (뉴스검색 API, 클라이언트 ID, 시크릿)
    searchUrl <- "https://openapi.naver.com/v1/search/news.xml"
    Client_ID <- "u3POQ31h1ZrcLd7tp8Q6"
    Client_Secret <- "_mPL84AwgG"
    
    query <- URLencode(iconv("인공지능","euc-kr","UTF-8"))
    # URL작성(검색 키워드를 "UTF-8"로 암호화하고 API로 요청할 UML를 만듬. 검색결과는 20개로 요청)
    url <- paste(searchUrl, "?query=", query,
                 "&display=20", sep = "")
    
    # 문서 다운로드
    doc <- getURL(url,
                  httpheader=c('Content-Type'="application/xml",
                  'X-Naver-Client-Id'=Client_ID,
                  'X-Naver-Client-Secret'=Client_Secret))
    doc
    
    # 뉴스 추출 및 단어 간 빈도 비교
    
    xmlFile <- xmlParse(doc)
    
    # 뉴스추출
    # XML문서에 있는 20개의 <item>태그 내에 있는 태그들을 항목명으로
    # 하는 데이터프레임 생성
    df <- xmlToDataFrame(getNodeSet(xmlFile, "//item"))
    df
    
    # 뉴스내용
    description <- df[,4]
    description
    
    # 뉴스내용 데이터 정제
    # 숫자(\\d), <b></b>태그, HTML문서의 큰따움표(&quot;) => 빈문자열로 대체
    # '|'는 or 조건
    description2 <- gsub("\\d|<b>|</b>|&quot;","",description)
    description2
    
    # 단어추출 RmecabKo패키지의 nouns()함수 사용
    # 20개의 각 뉴스에 대한 단어 추출결과를 리스트로 나타남.
    # iconv() : 문자 백터를 암호화하는 기능
    nouns <- nouns(iconv(description2, "UTF-8"))
    nouns
    
    # 리스트를 백터로 변환
    # 각 리스트의 단어들을 하나의 백터로 통합
    # 'use.names = F' : 뉴스 원문을 제외
    nouns.all <- unlist(nouns,use.names = F)
    nouns.all
    
    # 글자수가 1자 이하인 단어 추출 ==> 분석에서 제외 대상
    nouns.all1 <- nouns.all[nchar(nouns.all)<=1]
    nouns.all1
    
    # 글자수가 2자 이상인 단어 추출 ==> 분석대상
    nouns.all2 <- nouns.all[nchar(nouns.all)>=2]
    nouns.all2
    
    # 단어 빈도
    nouns.freq <- table(nouns.all2)
    nouns.freq
    
    # 단어 빈도를 데이터 프레임으로 생성(문자열의경우, 펙터유형으로 하지 않음.)
    nouns.df <- data.frame(nouns.freq, stringsAsFactors = F)
    nouns.df
    
    # 단어 빈도가 역순으로 정렬
    nouns.df.sort <- nouns.df[order(-nouns.df$Freq),]
    nouns.df.sort
    
    # 단어의 워드 클라우드
    wordcloud(nouns.df.sort[,1],          # 단어
              freq = nouns.df.sort[,2],   # 빈도
              min.freq = 1,               # 최소 단어 빈도
              scale = c(3,0.7),           # 단어 크기 범위 
              rot.per = 0.25,             # 회전 비율
              random.order = F,           # 고빈도 단어 중앙배치
              random.color = T,
              colors = rainbow(10)
              )        
    install.packages("wordcloud2")
    library(wordcloud2)
    wordcloud2(nouns.df.sort)  

    lab02

    실습 블로그 검색 여행 키워드

    # 실습
    # 네이버 블로그에서 검색
    # 여행에 관한 네이버 블로그를 검색해서 어떤 단어들이 많이 나타나는지 파악해보자
    
    # 네이버 오픈 API
    # 네이버에는 뉴스,쇼핑,블로그,카페,지식in,전문자료,영화,책 등 다양한 정보 제공하는 메뉴들이 있음.
    # 이런 정보들을 쉽게 받아볼수 있도록 오픈API를 제공함.
    # API이용신청 => API이용신청 승인 => API호출 => 결과
    
    # 필요한 패키지
    # Rcurl : 일반적인 HTTP 요청(다운로드)
    # Remcabko : 한글 문장의 형태소 분석
    # wordcloud : 워드 클라우드 출력
    # XML : 로컬, 웹에 연결된 XML, HTML문서 읽음.
    
    # 네이버 오픈 API키 발급 받기
    # Client ID : 
    # Client Secret : 
    
    # 블로그검색 : "여행" 키워드
    
    # 1)API 설정 
    # 2)URL 작성
    # 3)문서 다운로드 : getURL()
    # 4)XML 문서구조로 변환 : xmlparse()
    # 5)뉴스 내용 추출 : xpathsApply()
    # 6)데이터 정제 : gsub()
    # 7)단어 추출 : nouns()
    # 8)단어 빈도분석 : table()
    # 9)워드 클라우드 출력 : wordcloud()
    
    install.packages("RCurl")
    # install.packages("XML")
    # install.packages("wordcloud")
    install.packages("RmecabKo")
    library(RCurl)
    library(XML)
    library(wordcloud)
    library(RmecabKo)
    
    # RmecabKo 패키지에서 사용하는 형태소 기본 기능 설치 => 폴더가 자동 생성됨.
    install_mecab("C:/Rlibs/mecab")
    library(RmecabKo)
    
    # API설정 (블로그검색 API, 클라이언트 ID, 시크릿)
    searchUrl <- "https://openapi.naver.com/v1/search/blog"
    Client_ID <- "u3POQ31h1ZrcLd7tp8Q6"
    Client_Secret <- "_mPL84AwgG"
    
    query <- URLencode(iconv("여행","euc-kr","UTF-8"))
    # URL작성(검색 키워드를 "UTF-8"로 암호화하고 API로 요청할 UML를 만듬. 검색결과는 20개로 요청)
    url <- paste(searchUrl, "?query=", query,
                 "&display=20", sep = "")
    
    # 문서 다운로드
    doc <- getURL(url,
                  httpheader=c('Content-Type'="application/xml",
                  'X-Naver-Client-Id'=Client_ID,
                  'X-Naver-Client-Secret'=Client_Secret))
    doc
    
    # 뉴스 추출 및 단어 간 빈도 비교
    
    xmlFile <- xmlParse(doc)
    
    # 뉴스추출
    # XML문서에 있는 20개의 <item>태그 내에 있는 태그들을 항목명으로
    # 하는 데이터프레임 생성
    df <- xmlToDataFrame(getNodeSet(xmlFile, "//item"))
    df
    
    # 뉴스내용
    description <- df[,4]
    description
    
    # 뉴스내용 데이터 정제
    # 숫자(\\d), <b></b>태그, HTML문서의 큰따움표(&quot;) => 빈문자열로 대체
    # '|'는 or 조건
    description2 <- gsub("\\d|<b>|</b>|&quot;","",description)
    description2
    
    # 단어추출 RmecabKo패키지의 nouns()함수 사용
    # 20개의 각 뉴스에 대한 단어 추출결과를 리스트로 나타남.
    # iconv() : 문자 백터를 암호화하는 기능
    nouns <- nouns(iconv(description2, "UTF-8"))
    nouns
    
    # 리스트를 백터로 변환
    # 각 리스트의 단어들을 하나의 백터로 통합
    # 'use.names = F' : 뉴스 원문을 제외
    nouns.all <- unlist(nouns,use.names = F)
    nouns.all
    
    # 글자수가 1자 이하인 단어 추출 ==> 분석에서 제외 대상
    nouns.all1 <- nouns.all[nchar(nouns.all)<=1]
    nouns.all1
    
    # 글자수가 2자 이상인 단어 추출 ==> 분석대상
    nouns.all2 <- nouns.all[nchar(nouns.all)>=2]
    nouns.all2
    
    # 단어 빈도
    nouns.freq <- table(nouns.all2)
    nouns.freq
    
    # 단어 빈도를 데이터 프레임으로 생성(문자열의경우, 펙터유형으로 하지 않음.)
    nouns.df <- data.frame(nouns.freq, stringsAsFactors = F)
    nouns.df
    
    # 단어 빈도가 역순으로 정렬
    nouns.df.sort <- nouns.df[order(-nouns.df$Freq),]
    nouns.df.sort
    
    # 단어의 워드 클라우드
    wordcloud(nouns.df.sort[,1],          # 단어
              freq = nouns.df.sort[,2],   # 빈도
              min.freq = 1,               # 최소 단어 빈도
              scale = c(3,0.7),           # 단어 크기 범위 
              rot.per = 0.25,             # 회전 비율
              random.order = F,           # 고빈도 단어 중앙배치
              random.color = T,
              colors = rainbow(10)
              )        
    install.packages("wordcloud2")
    library(wordcloud2)
    wordcloud2(nouns.df.sort)  

    wordcloud2

    n

    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기
    loading