inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

R로 하는 웹 크롤링 - 실전편

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

442

Steady

작성한 질문수 4

0

안녕하세요,

네이버 금융의 종목분석 페이지에 나와 있는 재무정보를 크롤링하고자 하는데 문제에 부딪쳐 문의 드립니다. (https://finance.naver.com/item/coinfo.nhn?code=005930)

 아래 두 가지 방법으로 크롤링을 시도해보았습니다.

1) 강의에서 말씀하신 숨겨진 주소를 찾아서 크롤링

: 크롬 개발자 도구에서 Network 검사를 통해 숨겨진 주소를 확인하고 (이 경우 네이버가 지속적으로 인증값을 바꿈) JSON 형식으로 된 재무정보를 깔끔하게 불러들일 수 있으나, 인증값이 계속 바뀌기 때문에 이 부분을 핸들링 하는 것이 어려움. 따라서 아래 셀레니움을 이용한 방식을 사용하고자 하는데요,

2) 셀레니움을 통한 크롤링

: 따라서 셀레니움을 통해 크롤링을 시도했으나 소스가 iframe으로 보호되어 크롤링이 어렵습니다. 개발자도구에서 버튼의 xpath를 확인해도 정작 R에서는 읽어들이지 못하고 (iframe으로 숨겨진 탓으로 보입니다) css selector라는 크롬 익스텐션으로는 아예 재무정보 부분이 블록되어 있어서 제대로 된 xpath를 읽지 못합니다. 이 경우 핸들링을 어떻게 해야 할까요? 셀레니움 강의 부분은 짧아서 다른 정보를 찾아봤지만 파이썬으로 내용이 많이 나와 R과는 조금 다른 듯 합니다.

R 웹-크롤링

답변 1

0

코코

안녕하세요. Steady 님

말씀하신데로 네이버 증권에서 크롤링하는것은 매우 까다로운것으로 보입니다.

네이버 증권은 FnGuide에서 정보를 제공받아지는 것으로 보이는데

Fnguide에서 다음과 같은 코드를 이용해서 수집하는게 어떨까 싶습니다.

도움이 되셨기를 바랍니다.

library(XML)

url<-"https://comp.fnguide.com/SVO2/ASP/SVD_Finance.asp?pGB=1&gicode=A005930&cID=&MenuYn=Y&ReportGB=&NewMenuID=103&stkGb=701"

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

kk<-b[527:2023]

kk2<-paste0(kk,collapse = "")

h<-readHTMLTable(kk2)

h

보배드림 content 관련 규칙 변경

0

394

0

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

0

314

0

에러 코드

0

387

2

최종 코드 입니다.

0

267

0

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

0

504

1

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

0

366

1

소스코드

0

273

1

Referer

0

307

1

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

0

443

1

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

0

320

1

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

0

381

1

셀레늄 사용시 W3C 에러 문제

0

266

1

수업관련 문의

0

333

3

오류무시 code 관련

0

255

1

위도 경도 가져오기

0

359

1

encoding 해결 방법

0

298

1

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

0

328

1

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

0

355

2

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

0

330

2

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

0

539

1

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

1

677

5

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

0

242

2

웹 크롤링 방법

0

193

1

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

0

272

2