R

R 기초 14 - 웹(멜론)에서 가사 불러오기(웹을 이용한 데이터 가져오기) XML, json

코딩탕탕 2022. 10. 24. 12:45

 

xml data 읽어오기

```jsx
# 멜론 노래 가사 읽기

# install.packages('httr')
# library(httr)
install.packages("XML") # XML package를 install 한다.
library(XML)            # 불러온다.

# url을 준다. (멜론 가사가 있는 url)
url <- "https://www.melon.com/song/popup/lyricPrint.htm?songId=10000"

# GET 방식으로 url을 불러온다.
source <- htmlParse(rawToChar(GET(url)$content)) # html 코드를 불러온다.
source

text <- xpathSApply(source, "//div[@class='box_lyric_text']", xmlValue) # 해당 div 부분을 불러온다.
text

mytest <- gsub("[\r\n\t]", "", text) # 해당 정규표현식 삭제
mytest

# ------------------------
# xml data 읽기
```

주소를 가져오기전에 XML package를 install한다.

url을 복사해서 url이라는 변수명에 넣고, GET방식으로 가져오도록 코드를 입력한다.

source 변수명은 해당 주소의 html을 가져오게 된다.

text 변수명은 해당 코드에 대한 내용을 가져오게 된다.(가사)

mytest는 정규표현식까지 출력되기때문에 그것을 삭제해준다.

 

 

xml data 읽어오기

# ------------------------
# xml data 읽기
url <- "https://raw.githubusercontent.com/pykwon/python/master/seoullibtime5.xml"
r <- GET(url)
typeof(r)
doc <- xmlTreeParse(r, useInternalNodes = T)
doc

rootNode <- xmlRoot(doc)
rootNode
rootNode[[1]]
rootNode[[1]][[1]]

xmlSApply(rootNode, xmlValue) # xmlValue는 한글패치

xpathSApply(rootNode, "//LBRRY_NAME", xmlValue) # LBRRY_NAME 부분만 읽어오기

url을 가져와서 get 방식으로 r이라는 변수명에 넣고 그것을 읽어온다.

xmlValue는 한글패치가 되도록 하는 것이다.

 

 

json data 읽어오기

# ------------------------
# json data 읽기
install.packages("rjson") # rjson install 하기
library(rjson)            # 불러오기
url <- "https://raw.githubusercontent.com/pykwon/python/master/seoullibtime5.json"
doc <- fromJSON(file=url)
doc
df <- data.frame(doc)
df
df$SeoulLibraryTime.row.LBRRY_NAME
df$SeoulLibraryTime.row.ADRES

rjson을 install하고 url을 읽어와서 data를 불러온다.