R
R 프로그래밍 관련 질문입니다 (반복문, 데이터 저장)
library(RSelenium)

# 가상서버에서 크롬으로 연결
remdr <- remoteDriver(remoteServerAddr='localhost', port=4445L, browserName='chrome')


# 창 열기
remdr$open()


# url 접속 (멜론 월간 TOP100)
remdr$navigate("https://www.melon.com/chart/month/index.htm?classCd=GN0000")

# 원하는 버튼 xpath 찾아서 클릭
remdr$findElement(using = 'xpath', value = '//*[@id="DM0000"]/a/span')$clickElement()
remdr$findElement(using = 'xpath', value = '//*[@id="lst50"]/td[5]/div/a')$clickElement()
  
# 현재 페이지 소스 읽어들이기
source <- remdr$getPageSource()[[1]]
  
html <- read_html(source)


# 노래 제목 뽑기
song_name <- html_nodes(html,'div.song_name') %>%
  html_text()
song_name<-gsub("\n","",song_name)
song_name<-gsub("\t","",song_name)
song_name<-gsub("곡명","",song_name)

song_name


# 가수 뽑기
song_artist <- html_nodes(html,'div.info > div.artist') %>%
  html_text()
song_artist <- gsub("\n","",song_artist)
song_artist <- gsub("\t","",song_artist)
song_artist


# 가사 뽑기
song_lyric <- html_nodes(html,'div.section_lyric') %>%
  html_text()
song_lyric <- gsub("\n","",song_lyric)
song_lyric <- gsub("\t","",song_lyric)
song_lyric <- gsub("가사프린트가사오류신고","",song_lyric)
song_lyric


# 데이터 프레임화
song_info <- data.frame(song_name=song_name,
                        song_artist=song_artist,
                        song_lyric=song_lyric,
                        stringsAsFactors = FALSE)

view(song_info)

# 창 닫기
remdr$close()

 

안녕하세요, 어찌저찌 여기까지 와서 질문을 하게 되었네요ㅠㅠ

데이터 분석 수업의 과제 일환으로 R 분석을 활용한 트렌드 도출을 하게 되었는데

교수님께서 알려주신 것이라고는 본인이 짠 코드만 던져주신 것...

혼자 이것저것 찾아보다가 Selenium이라는 것을 알게 되었고,

이걸 토대로 멜론 음원 차트에서 노래제목, 가수, 가사를 뽑아 정리하고자 하였습니다.

이것저것 찾아본 끝에, 저 코드를 돌리면 아래와 같은 결과가 나오는데요

이렇게 1위부터 50위 까지의 정보를 하나의 테이블로 만들고 싶습니다...!

반복을 위해서는 for문을 사용하라고 하는데, 기초 문법 지식이 없는지라 구글링해서 아무리 따라해도 자꾸 오류만 나네요ㅠㅠ

제가 짠 코드가 비효율적이라면, 혹시 다른 방법이 또 있을까요?

감사합니다:)

댓글 0