[R좀 R려줘!] R 을 이용한 네이버 뉴스 크롤링 하기!

👈 Click! 투표!

R을 이용해 사용자 정의 함수 naver_news와 make_url 두개의 함수를 통해 네이버 뉴스를 크롤링 해보도록 하겠습니다!

 

naver_news의 경우 크롤링 하는데 들어갈 목록을 정의한 함수입니다.

 

저의 경우 신문사, 발행시간, 뉴스 기사, 링크를 df_news의 데이터 프레임 안에 넣어주었으며,

make_url은 키워드에 따라 상이한 url을 만들어주는 함수입니다.

 


naver_news = function(x) {
    #x <- link
    
    source = read_html(x, encoding = "UTF-8")
    
    news_list = source %>%
        html_nodes(xpath = '//*[@class="type01"]') %>%
        html_nodes(xpath = '//*[@class=" _sp_each_title" or @class="_sp_each_url _sp_each_title"]')
    
    news_list %>% html_text() -> news_title    
    
    news_list %>% html_attr("href") -> news_link
    
    news_list %>% 
        html_nodes(xpath = '//*[@class="_sp_each_source"]') %>%
        html_text() -> news_source
    
    news_list %>% 
        html_nodes(xpath = '//*[@class="txt_inline"]') %>%
        gsub(pattern = "<.*?", replacement = "") %>%
        str_extract_all(pattern = "[0-9]{1,2}[가-힣]{1}.{1,4}전",
                        simplify = TRUE) -> news_time
    
    df_news = data.frame(obs = 1:length(news_list),
                         source = news_source,
                         time = news_time,
                         time_collect = Sys.time(),
                         title = news_title,
                         link = news_link)
    
    return(df_news)
}

make_url = function(x){
    a = "https://search.naver.com/search.naver?where=news&sm=tab_jum&query="
    x = URLencode(enc2utf8(x)) #한글로 입력되는 값을 utf-8으로 인코딩.
    x = paste0(a, x)
    
    return(x)
}

url = make_url("컴퓨터") #컴퓨터 자리에 키워드를 작성.

pop = naver_news(url)
pop

참고로 위 코드 중 ‘xpath’에 들어가는 @class는 네이버 뉴스의 html class 명입니다!

 

즉, html에 정의 되어있는 class를 활용한 크롤링이 되겠죠!

 

그렇다면 해당 class는 어떻게 확인할 수 있을까요?

 



 

저와 같이 키워드를 입력하고 뉴스 탭으로 이동합니다!

 

그곳에서 뉴스명 위에 마우스를 올리고 ‘오른쪽 클릭 -> Inspect(ctrl + shift + l)’ 하시면 오른쪽에 개발자 도구를 확인하실 수 있고 그곳에 빨간 동그라미 안의 내용을 이용하시면 됩니다!

 

 

그 후에 make_url 함수의 파라미터에 크롤링 하고 싶은 객체를 작성해서 넣으시면 됩니다~

 

꼭 네이버 뉴스가 아니더라도 이런 식으로 각종 사이트, 블로그를 활용할 수 있겠죠?

 

저의 경우 컴퓨터를 넣어서 돌려보면!

 



 

위와 같은 결과를 확인하실 수 있어요~

 

이를 통해 필요하신 것들을 정의하면 되겠죠?!ㅎㅎ

 

※본 내용은 멀티캠퍼스 ‘200224~’200228 ‘R좀 R려줘! R 데이터 분석 with Cloud’를 통해

학습한 내용을 기반으로 직접 작성한 내용입니다.

 

 

2020.02.27 – [개발] – [R좀 R려줘!] R gsub() 함수를 이용한 패턴 치환하기!

 

[R좀 R려줘!] R gsub() 함수를 이용한 패턴 치환하기!

R gsub() 함수를 이용하여 패턴 치환하는 방법에 대해 알아보겠습니다. 예제(text1)에 있는 값을 gsub()함수를 이용해 ‘@’로 치환하는 작업입니다. 참고) # 활용 함수 # ▶ gsub(): 패턴 치환 아래 내용을

signedinfo.com

2020.02.27 – [일상] – 멀티캠퍼스 R좀 R려줘! R 데이터 분석 with Cloud 후기!!

 

멀티캠퍼스 R좀 R려줘! R 데이터 분석 with Cloud 후기!!

안녕하세요 :-)! 오늘은 멀티캠퍼스에서 진행하는 R좀 R려줘! R 데이터 분석 with Cloud 강의 들은 후기에 대해 포스팅 해볼까 합니다! 그럼 시작해볼까요? ㅎㅎ 우선. 저는 사실 멀티캠퍼스를 잘 모

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] R rbind(), colnames()를 활용한 하나의 data.frame() 만들기!

 

[R좀 R려줘!] R rbind(), colnames()를 활용한 하나의 data.frame() 만들기!

안녕하세요 🙂 오늘은 R함수인 rbind(), colnames()를 활용하여 하나의 data frame을 만들어보려고 합니다! 실습 파일 다운로드 링크 문제는 아래와 같습니다.  Q. “2014_2017.xlsx” 에는 4개의 sheet가 있다…

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] R unique(), nrow()를 활용한 언론사 별 트렌드 파악하기!

 

[R좀 R려줘!] R unique(), nrow()를 활용한 언론사 별 트렌드 파악하기!

안녕하세요 🙂 오늘은 R함수인 unique(), nrow()를 활용하여 언론사 별 트렌드를 파악해보려고 합니다! 실습 파일 다운로드 링크 문제는 아래와 같습니다. # Q1. 몇 군데 언론사의 뉴스 기사가 수

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] aggregate(), ggplot() 함수를 이용한 언론사별 뉴스기사 그래프 그리기!

 

[R좀 R려줘!] aggregate(), ggplot() 함수를 이용한 언론사별 뉴스기사 그래프 그리기!

안녕하세요 🙂 오늘은 aggregate(), ggplot()함수를 이용하여 언론사별 뉴스기사 그래프를 그려보려고 합니다! 이전 글을 먼저 확인해주세요! 1) 2020/02/28 – [개발] – [R좀 R려줘!] R rbind(), colnames()를 활..

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] R에서 자연어(NLP)처리를 해보자!

 

[R좀 R려줘!] R에서 자연어(NLP)처리를 해보자!

안녕하세요 :-)! 오늘은 R에서 자연어(NLP) 처리를 어떻게 하는지 알아보려고 합니다! R 자연어 처리의 경우 SK텔레콤에 재직 중이신 Jeon Heewon님의 깃헙을 참고해보려고 해요! R에 자연어 처리 패키

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] wordcloud2 패키지를 이용해 최다빈도 단어 추출하기!

 

[R좀 R려줘!] wordcloud2 패키지를 이용해 최다빈도 단어 추출하기!

안녕하세요 🙂 오늘은 wordcloud2 패키지를 이용하여 최다빈도 단어를 추출해보도록 하겠습니다! 추출할 단어를 위해 하나의 csv 파일을 사용할 것이라 다음 링크에서 다운받아서 활용해주세요! df

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] 데이터 분석할때 반복문 진행 현황 확인하기!

 

[R좀 R려줘!] 데이터 분석할때 반복문 진행 현황 확인하기!

안녕하세요 🙂 데이터 분석할때 반복문을 심심치 않게 사용하는데요! 이때 분석량이 많을 경우 어디까지 진행 됐는지 궁금할때 있잖아요? for(n in 1:65){ cat(paste0(“r==== Progress: “, n, “/65 ====”)) #Sys..

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] 하나의 엑셀(Excel)에 담긴 정보를 특정 기준으로 여러 엑셀 파일로 나누고 합치기!

 

[R좀 R려줘!] 하나의 엑셀(Excel)에 담긴 정보를 특정 기준으로 여러 엑셀 파일로 나누고 합치기!

안녕하세요 :-)!! 오늘은 하나의 엑셀에 담긴 정보를 여러 엑셀 파일로 쪼개는 방법에 대해 알아보겠습니다! 사용할 예제 파일은 링크를 통해 확인해주세요. ㅎㅎ elec = read.csv(“elec_load.csv”, stringsAs

signedinfo.com

2020.02.28 – [개발] – [R좀 R려줘!] R을 이용하여 네이버 실시간 검색어, 인스타그램 검색 결과 크롤링 하기!!

 

[R좀 R려줘!] R을 이용하여 네이버 실시간 검색어, 인스타그램 검색 결과 크롤링 하기!!

안녕하세요 🙂 오늘은 R을 이용하여 네이버 실시간 검색어, 인스타그램 검색 결과를 크롤링 해보도록 하겠습니다! #install.packages(“RSelenium”) library(“RSelenium”) library(“wdman”) #node.js나 javascript..

signedinfo.com