호돌찌의 AI 연구소
Published 2021. 6. 17. 22:19
[Crawling] XML, JSON in R Programming/R

2019년에 Crawling 공부하면서 정리를 했었던 내용의 일부입니다. 


Contents

 

 

반복문에서 예외 처리

  • 반복문 실행 중 여러 이유로 다양한 에러가 발생함. 특히 HTTP 요청 결과 상태 코드가 4xx이거나 응답결과는 정상이었지만 HTML이 비어있는 경우 등 여러가지 이슈에 부딪힐 수 있으므로 예외처리를 해주어야 함
tryCatch({

		원래 실행하고자 한 명령어들 
}, error = function(e) e) # 'e' 대신에 에러 발생 시 실행할 내용을 추가할 수 있음.
# 예를 들어 "cat('-> error detected!') 처럼 설정하면 반복문 실행 중 
# 에러가 발생했을 때, 위 문구가 대신 출력됨

 

 

JavaScript에 대한 이해


  • 객체 기반의 스크립트 언어
  • 스크립트 언어는 인터프리터가 필요함. C처럼 컴파일러가 필요한 언어는 컴파일 언어
  • JavaScript는 웹 브라우저의 엔진이 인터프리터의 역할을 함
  • JavaScript는 HTML, CSS와 함께 사용됨 / HTML웹페이지의 전체 틀을 잡고, CSS개별 요소의 디자인을 맡음
  • JavaScript는 사용자와의 상호 작용을 통해 웹 페이지에서 보여주는 콘텐츠를 동적으로 제어

 

AJAX & XHR


  • AJAX(Asynchronous Javascript And XML) : JavaScript 라이브러리 중 하나, 웹 서버와 통신할 때 전체 웹 페이지를 새로 고침하는 대신, 특정 부분에 사용되는 데이터만 웹 서버로 부터 내려받으므로 '비동기' 방식이라 부름.
  • AJAX는 HTTP요청 대신 XHR(XML HTTP Request) 객체를 사용.
  • AJAX는 웹 서버와의 통신을 통해 XML 및 JSON 형태의 데이터를 주고 받음

 

XML


  • XML(Extensible Markup Language)은 마크업 언어로써 인터넷과 연결된 서로 다른 시스템끼리 데이터를 쉽게 주고 받으려는 목적으로 만들어짐. HTML과 비슷한 형태를 가짐
    • 시작 태그와 종료 태그 사이에 텍스트가 포함되어있고, XML의 태그는 대소문자를 구분.
  • XML은 사람과 컴퓨터가 인식할 수 있도록 텍스트 데이터 형식으로 유니코드를 사용하며, 많은 API에서 XML 형태로 텍스트 데이터를 처리.

 

R에서 XML 데이터를 다루는 방법


R에서 XML 데이터를 다룰 때 rvest 패키지 함수 그대로, 함수명만 바꿈. html_node()와 다르게 css, xpath에 할당 되는 값은 대소문자를 구분함.

즉 HTML과 다른 점은 태그(노드)가 태그의 기능 없이 컬럼명의 성격을 가짐.

read_xml(x,encoding)
xml_node(x, css, xpath)
xml_nodes(x, css, xpath)
xml_text(x, trim = FALSE)

 

JSON에 대한 이해


  • JSON(JavaScript Object Notation) : JavaScript이용하여 데이터를 주고 받을 때 사용되는 교환 형식.
  • JSON 과 XML 처럼 사람과 컴퓨터가 인식하기 쉽고 용량도 작아 데이터 교환 형식으로 많이 사용됨
  • JSON의 형태는
    • 중괄호{ } 안에 Key : Value 형식이 반복
    • Value가 여러 개이면 대괄호 [ ] 안에 , 로 연결

R에서 JSON 데이터를 다루는 방법


  • jsonlite 패키지의 fromJSON()함수를 사용함, txt인자에는 문자열 벡터를 할당해야함
  • HTTP 응답 객체인 res는 'response' 속성을 가지므로 content() 또는 as.character() 함수를 이용하여 문자열 벡터로 변환할 수 있음
  • fromJSON() 함수 실행 결과로 리스트형 객체가 반환됨
  • 원소 중 데이터프레임이 수집하고자 하는 데이터일 가능성이 매우 높아, 해당 데이터프레임만 추출하면 쉽게 데이터를 얻을 수 있음

 

Chrome 개발자도구 활용법


  1. 크롤링하려는 타겟 웹페이지에서 F12 열고 네트워크 탭으로 이동한 다음 새로고침
  1. Doc에서 파일(보통 첫번째 파일)을 눌러 오른쪽에 상세 내용을 열어 'Preview'를 열어 내용확인 → 만약 내용이 없다면 'Response'로 이동
  1. 앞서 배웠을 때 'Response'에는 해당 파일이 실행된 결과를 응답받은 HTML이 있음. Ctrl + F를 눌러 수집하려는 한글이 있는지 없는지 확인!
  1. AJAX가 사용된 파일이라면 일반적으로 'XHR'에 포함되어 있으므로 'XHR'로 이동하여 위와 같은 탐색 과정을 반복.

 

 

<Copyright 2019. @hotorch. All rights reserved.>

 

'Programming > R' 카테고리의 다른 글

R 정규표현식 기본문법  (0) 2021.07.17
[Crawling] R stringr 패키지 사용법  (0) 2021.07.06
[Crawling] RSelenium  (0) 2021.07.02
[Crawling] JavaScript가 사용된 Webpage 긁기  (0) 2021.06.22
[Crawling] 용어 다지기 및 Tutorial  (0) 2021.06.05
profile

호돌찌의 AI 연구소

@hotorch's AI Labs

포스팅이 도움이 되셨다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!