inflearn logo
강의

Course

Instructor

Web Crawling with R - Practical Edition

Naver Baseball News Crawling

에러 코드

389

iamkimseunghyun

17 asked

0

Error in which(str_detect(b, "id=\"newEndContents\">")):which(str_detect(b,  : 

  argument of length 0

위 에러 메세지가 발생하는데 무엇인지 못찾겠네요. 아래는 코드 입니다. 

final_data <-NULL

i<-1

j<-1

for(j in 1:5) {

  

for(i in 1:2) {

  date<-Sys.Date()-j

  date2<-gsub("-","",date)

url <- paste0("https://sports.news.naver.com/kbaseball/news/list?isphoto=N&date=",date2,"&page=", i)

b<-readLines(url, encoding = "utf-8")

library(RJSONIO)

b2<-fromJSON(b)

b2$list[[1]]

a1<-sapply(b2$list, function(x){x$oid})

a2<-sapply(b2$list, function(x){x$aid})

a3<-sapply(b2$list, function(x){x$title})

final_data<-rbind(final_data,cbind(a1, a2, a3))

cat("\n", date2, "-", i, "데이터 수집 중" )

}

}

setwd("/Users/??/Workspace/R/Projects/CrawlingPro/05")

write.csv(final_data, "baseball_news.csv", row.names = F)

final_data[,1]

final_data[,2]

con_url<-paste0("https://sports.news.naver.com/news?oid=", final_data[,1], "&aid=", final_data[,2])

library(stringr)

con_url

k<-1

con<-c()

for (k in 1:length(con_url)) {

  b<-readLines(con_url[k], encoding="utf-8")

  b2<-b[which(str_detect(b, "id=\"newEndContents\">")):which(str_detect(b, "news_end_btn"))]

  b3<-paste(b2, collapse = " ")

  b3

  b3<-gsub("<.*?>", "",b3)

  b3<-gsub("\t|&gt;|&#160;|&lt;", "",b3)

  

  con[k] <- b3

  cat("\n", k)  

}

baseball_data<-cbind(final_data, con)

colnames(baseball_data) <- c("oid", "aid", "head", "cont")

write.csv(baseball_data, "baseball.csv", row.names=F)

R 웹-크롤링

Answer 2

0

iamkimseunghyun

안녕하세요. 답변 감사 드립니다. 아무래도 제가 실수를 한 것 같네요. 밤 늦게 피곤할 때 듣다보니 집중력이 떨어졌던 것 같습니다. 감사합니다.

0

coco

안녕하세요. 먼길님

뉴스내에서 html 규칙이 바뀐것 같습니다. 

  b2<-b[which(str_detect(b, "id=\"newEndContents\">")):which(str_detect(b, "news_end_btn"))]

여기서 "newEndContents" 부분이 "newsEndContents" 로 바뀐듯 합니다.

아래 코드를 참고해주세요

for (k in 1:length(con_url)) {

  

  b<-readLines(con_url[k], encoding="UTF-8")

  

  b2<-b[which(str_detect(b, "id=\"newsEndContents\">")):which(str_detect(b, "news_end_btn"))]

    b3<-paste(b2, collapse = " ")   

  b3<-gsub("<.*?>", "",b3)  

  b3<-gsub("\t|&gt;|&#160;|&lt;", "",b3)    

  

  con[k] <- b3

  

  cat("\n", k)  

  

}

보배드림 content 관련 규칙 변경

0

394

0

readLines부터 에러가 뜨는데 어떻게 해야할까요 ㅜㅜ

0

316

0

최종 코드 입니다.

0

268

0

토큰을 제출해야 하는 사이트 크롤링

0

504

1

객체 'k'를 찾을 수 없습니다

0

366

1

소스코드

0

273

1

Referer

0

309

1

보베드림 강의 오류관련 질문입니다.

0

444

1

원하는 지역의 카페(맛집) 리스트 크롤링 for문 질문

0

320

1

원하는 지역의 카페(맛집) 리스트 크롤링 10:09분경 질문

0

381

1

셀레늄 사용시 W3C 에러 문제

0

267

1

수업관련 문의

0

334

3

오류무시 code 관련

0

256

1

위도 경도 가져오기

0

360

1

encoding 해결 방법

0

299

1

대량의 뉴스데이터를 보고싶다면 어떻게 해야하나요?

0

328

1

자바스크립트 및 iframe으로 구성되어 있는 웹페이지 크롤링 문의

0

442

1

어떤 문제로 인해 na 가 발생하는걸까요? 블로그 크롤링 부분입니다.

0

357

2

이미지 크롤링 개수를 80개 이상으로 하는 방법도 있을지요?

0

331

2

혹시 셀레니움을 스레드로 이용 할 수 있을까요?

0

540

1

네이버는 셀레니움을 통해 로그인할 경우 캡챠가 무조건 떠서 불가능하네요

1

680

5

셀레니움을 사용하지 않고 로그인을 하는 방법은 없나요?

0

243

2

웹 크롤링 방법

0

194

1

readlines. htmltab, readhtmltable 구별해 사용하는 방법?

0

274

2