2019년에 Crawling 공부하면서 정리를 했었던 내용의 일부입니다.
Contents
반복문에서 예외 처리
- 반복문 실행 중 여러 이유로 다양한 에러가 발생함. 특히 HTTP 요청 결과 상태 코드가 4xx이거나 응답결과는 정상이었지만 HTML이 비어있는 경우 등 여러가지 이슈에 부딪힐 수 있으므로 예외처리를 해주어야 함
- R 반복문 실행 도중 에러가 발생하는 경우, 해당 에러는 건너뛰고 다음번 실행으로 넘어가도록 설정하기 위해 tryCatch() 함수를 사용, (설명이 괜찮게 되어 있는 것 같다)
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 개발자도구 활용법
- 크롤링하려는 타겟 웹페이지에서 F12 열고 네트워크 탭으로 이동한 다음 새로고침
- Doc에서 파일(보통 첫번째 파일)을 눌러 오른쪽에 상세 내용을 열어 'Preview'를 열어 내용확인 → 만약 내용이 없다면 'Response'로 이동
- 앞서 배웠을 때 'Response'에는 해당 파일이 실행된 결과를 응답받은 HTML이 있음. Ctrl + F를 눌러 수집하려는 한글이 있는지 없는지 확인!
- 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 |