[R] 웹 크롤링_스크레핑1

크롤링 프로젝트 1

1. 스크레핑

 - 웹 사이트에 있는 특정 정보를 추출하는 기술

 

2. 크롤링

 - 프로그램이 웹 사이트를 정기적으로 돌며 정보를 추출하는 기술

 

--------------------------------------------------------------------------------------

스크레핑 과정

1. 대상 URL 할당 (URL 지정)

2. 웹 문서 추출 : (R) htmlParser()

3. 특정 태그의 Data 추출 : XPathSApply()

4. Data 정제 (불필요한 특수문자, 공백문자 제거)

   : Gsub('\n', ' ', name)  #name에서 '\n' 문자를 제거한다.

5. Data 프레임화 : data.frame()

6. Data 정렬 : Format()

 

R스크립트 사용

R언어에서 Library(XML, HTTR) 사용

XML 문서나 HTML 문서를 만들거나 읽을 때 사용된다.

Xpath(XML PATH Language) 기술을 포함한다.

 

R언어 사용 시 Warning in (function (file = "", n = NULL, text = NULL, prompt = "?", keep.source = getOption("keep.source"),  :
  argument encoding="UTF-8" is ignored in MBCS locales

라는 에러가 날 경우 아래 코드를 실행해주면 에러가 사라진다.

Sys.setlocale(category = 'LC_ALL', locale = 'English_United States.1252')

 

R 코드

# 스크레핑1

library(httr)
library(XML)

url <- "https://darkgraycat.tistory.com/"
doc <- htmlParse(rawToChar(GET(url)$content),encoding = "utf-8")

# //는 중간 단계를 건너 뛴다.
prodName <- xpathSApply(doc, "//div[@id='main']//h2[@class='post_title']",xmlValue)
prodName <- gsub(" ","",prodName)
#prodName 제목

prodDate <- xpathSApply(doc, "//div[@id='main']//li[@class='post_date']",xmlValue)
prodDate <- gsub(" ","",prodDate)
#prodDate 날짜

#프레임화 data.frame
df <- data.frame(name=prodName, date=prodDate)

#정렬 format
df$name <-format(df$name, justfy="left")
df$date <-format(df$date, justfy="right")
df

#프레임화 과정에서 utf-8로 인코딩한게 깨진다..

 

블로그에서 F12를 눌러 개발자모드로 진입 후 검색할 범위를 검색

 

prodName <- xpathSApply(doc, "//div[@id='main']//h2[@class='post_title']",xmlValue)

[1] //div[@id='main']
범위를 설정해준 후

[2] //h2[@class='post_title']
찾을 값을 설정해준다.

html의 태그를 잘 봐야한다

제목은 h2인데 날짜는 li라 왜 안되지 하고 시간을 허비함