R 텍스트 크롤링 중 character(0)으로 나오는 경우
본문 바로가기
글쓰기/생각정리

R 텍스트 크롤링 중 character(0)으로 나오는 경우

by 찐콕 2022. 10. 2.

R에서 텍스트 크롤링을 하려면 먼저 내가 가져올 텍스트가 속한 html 부분을 찾아야 한다.

 

 

http://sti.kostat.go.kr/window/2017b/html/2017_win_3.html

 

통계의 창 - 텍스트는 어떻게 분석되는가

형태소(단어) 분석 의미의 최소단위인 형태소(morpheme)이나 단어에 대한 분석은 텍스트를 분석하는 가장 보편적인 방법으로, 문법적 규칙 혹은 확률에 의한 품사 태깅(part of speech tagging), 개체명

sti.kostat.go.kr

위의 [텍스트는 어떻게 분석되는가]의 텍스트를 가져오기 위해서는

 

키보드의 [F12] function key를 누르면 개발자모드로 들어간다.

 

1. 내가 원하는 문서부분을 확인할 수 있는 포인트를 활성화하여

2. 내가 원하는 문서의 내용을 누르면

3. 해당 부분의 text가 위치한 html을 확인할 수 있다.

 

처음 진행했던 R 코드는 다음과 같다.

 

 * rvest와 dplyr 패키지가 설치된 상태에서만 library 사용이 가능하다(아래 코드는 설치는 제외된 코드임.)

library(rvest)
library(dplyr)
url_tm<-"http://sti.kostat.go.kr/window/2017b/html/2017_win_3.html"
html_tm<-read_html(url_tm,encoding="UTF-8")
html_tm%>%html_nodes(".text_box text_box1 text_box_y p")%>%html_text()
html_text(html_nodes(html_tm,".text_box text_box1 text_box_y p"))
t1<-html_nodes(html_tm,".text_box text_box1 text_box_y p")
html_text(t1)

 

위의 R 코드를 실행하니 다음과 같은 결과가 나왔다.

 

 

R에서 text 읽어오기 중 data를 제대로 넣어다고 생각했는데 character(0)으로 나왔다.

그 말인즉 R에서 코드 작성이 잘못되었던가 아니면 텍스트 읽어보려는 부분 설정이 잘못되었을 가능성이 있어보였다.

 

의심

 

1. R 코드가 잘못 입력된 경우

div class의 경우 .을 이용하는 게 맞고 p 부분을 읽어와야 하므로 p를 입력하는 것 또한 일치하였다.

R 코드를 두번 세번 체크하여 다른 부분을 찾아봤지만 해당 부분에서 다른 점은 html code에서 빈칸이 없다는 것이다.

 

2. html code의 텍스트 사이의 빈공간의 영향으로 텍스트를 불러오지 못하는 경우.

 

<div class="text_box text_box1 text_box_y">
<p><span>형태소(단어) 분석</span> 의미의 최소단위인 형태소(morpheme)이나 단어에 대한 분석은 텍스트를 분석

 

처음 개발자 메뉴에서 div class가 내가 불러오려는 내용이라고 확인이 되었다. 그런데 위의 코드에서 ".text_box text_box1 text_box_y p" 라고 입력된 코드 사이의 빈칸이 html 의 텍스트를 못 불러오는 이유가 있지 않을까 생각했다.

하지만 다른 사람들의 R 텍스트 크롤링 코드를 확인해 보니 빈칸을 사용한 사람도 있었다. 그 코드가 맞는지는 확인하지 못했지만 일단 실행된 화면이 있는 것으로 보아 실행이 되었다고 판단하였다.

 

3. 내가 불러온 div class의 이름이 잘못된 경우

 

해당 홈페이지를 다시 방문하였다.

그리고 F12로 활성화된 개발자메뉴에서 내가 불러오고자 하는 텍스트가 포함된 html code에 마우스를 갖다가 대니 

왼쪽 해당 글에 다른 html code가 보였다.

 

   div.text_box.text_box1.text_box_y

 

그래서 처음 넣었던 html code를 다음과 같이 수정하였다.

 

*기존 library를 불러들인 상태에서 html code만 변경하는 것이라서 library가 없는 것임.

url_tm<-"http://sti.kostat.go.kr/window/2017b/html/2017_win_3.html"
html_tm<-read_html(url_tm, encoding="UTF-8")
html_tm%>%html_nodes(".text_box.text_box1.text_box_y p")%>%html_text()
html_text(html_nodes(html_tm,".text_box.text_box1.text_box_y p"))
t1<-html_nodes(html_tm,".text_box.text_box1.text_box_y p")
html_text(t1)

다음은 변경된 R code로 실행한 결과값이다.

해당 html code를 수정하니 character(0)에서 내가 불러오고자 하는 내용이 불러와지는 것을 확인할 수 있다.

 

만약 R에서 웹문서 텍스트를 읽어오려고 할때 character(0)으로 나타나면 내가 진행하고자 하는 html code가 F12 개발자모드에 나와있는것이 맞는지 해당 본문을 가져다 대는 것으로 html code를 check하는 것이 필요하다.

728x90

댓글