2022 데이터 사이언스/웹 크롤링 7

07. 웹 크롤링과 법적 문제

웹 크롤링 시 법적 권고안을 무시하면 법적인 문제가 발생할 수 있다. 웹 크롤링(Web Crawling)은 인터넷 서비스 '웹' 브라우저를 통해 인터넷을 돌아다니면서 인터넷 상의 정보를 가져가는 행위를 거미가 거미줄을 위를 기어다니는 것처럼 표현한 것이다. * 웹(Web)은 FTP처럼 대중적으로 사용되는 인터넷 서비스 또는 규약의 한 종류(웹 ≠ 인터넷) 웹 상의 정보에 대한 권리는 서비스 공급자에게 있다. 웹 크롤링을 수행하는 클라이언트는 정보 제공자의 요구를 반드시 받아들여야 할 의무는 없지만, 접근 금지를 요청하거나 법적인 문제를 제기하는 주체가 공급자이므로 받아들이는 것이 좋다. robot.txt는 관리자가 크롤링을 허용하는 정보와 허용하지 않는 정보를 명시해놓은 파일이다. 페이지 URL 주소 뒤..

06. 자동화 도구: Selenium

Selenium은 마우스나 키보드를 통한 브라우저 조작을 자동화하는 도구이다. Selenium은 사용자에 의해 이루어지는 웹 브라우저의 조작 및 제어를 자동화하는 도구이며, 사용자의 입력에 따라 동적으로 움직이는 페이지를 크롤링하는 동적 페이지 크롤링에 사용된다. Selenium 사용 시 웹 브라우저 제어 도구인 드라이버(Driver)로 별도의 창을 열게 되므로, 웹 브라우저를 실행하지 않고 페이지 소스만을 가져오는 requests 모듈에 비해 속도가 느리다. 그러나 requests 모듈의 경우 정적 웹 문서에 대한 크롤링만 가능한 반면, selenium은 마우스 클릭 및 스크롤링, 키보드 입력 등 모든 동적 활동에 대응할 수 있다. 따라서 동적 페이지의 비중이 커진 요즘의 웹 크롤링 작업에서 활용도가 ..

05. 데이터의 형태(2): HTML

HTML 데이터는 태그명이 태그 속 정보를 대표하지 않아 크롤링이 까다롭다. XML은 데이터 저장 및 정보 전달을 주된 목적으로 하는 언어이다. 따라서 각 태그가 별다른 기능을 제공하지 않고, 태그의 이름이 각 태그 안의 정보를 대표하는 역할을 한다. 즉, 태그의 이름으로부터 태그 속 정보의 내용을 유추할 수 있다. 반면, HTML은 클라이언트에게 보이는 화면을 디자인하기 위한 언어이다. 각 태그가 특정한 디자인 기능을 제공하는 것을 주된 목적으로 하기 때문에, HTML 태그의 이름에는 각 태그가 제공하는 기능이 반영된다. 태그의 이름이 태그 속 정보의 내용과 무관하므로 XML 데이터에 비해 크롤링이 까다롭다. 이번 포스팅에서는 HTML 형태의 데이터를 처리하는 방식에 대해 알아본다. 아래 링크에서 실시..

04. 데이터의 형태(1): XML

웹 상에서 가져올 수 있는 데이터의 형태에는 JSON, HTML, XML이 있다. (1) JSON(JavaScript Object Notation) JSON 표현식: 용량이 적고 사람과 기계가 모두 이해하기 쉬운 형태(JSON의 목적) {key:value} 쌍으로 이루어진 데이터를 저장하거나 전송할 때 사용하는 개방형 표준 포맷 Javascript에서 객체 생성 시 사용하는 표현식 (2) HTML(Hypertext Markup Language) 웹사이트에서 화면에 표시되는 정보를 약속한 것 Hypertext: 단순 텍스트 이상의 텍스트(링크 등의 개념이 포함된 텍스트) Markup: 꺾쇠()로 이루어진 태그를 사용하는 규격 (3) XML(eXtensible Markup Language) HTML의 한계를..

03. 데이터 프레임(Data Frame)

데이터 프레임은 행과 열로 이루어진 테이블 형태의 자료구조를 데이터 분석의 관점에서 부르는 말이다. 데이터 프레임(dataframe)은 테이블 형태로 데이터를 처리할 수 있어 데이터 분석에 용이하다. 웹 크롤링의 목적은 웹 상의 데이터를 분석에 용이한 dataframe 형태로 정리정돈하는 것이다. 앞선 포스팅에서 다룬 웹 페이지 요청 과정을 포함한 기본적인 웹 크롤링 절차는 다음과 같다. 웹 페이지에 요청할 요청문 준비(requests) get 요청을 보내고 요청에 대한 응답 수용 파싱(parsing): 응답의 종류(JSON, HTML, XML)에 따라 해석 도구(parser) 상이 해석 방식에 따라 데이터를 처리하는 프로세스 상이 프로세스에 맞게 데이터 정리정돈(dataframe 변환) 정리/가공한 데..

02. 웹 페이지 요청: requests

requests 모듈을 사용하여 server에 자원을 요청하고 문서를 읽어올 수 있다. 웹에서 데이터를 받아오는 과정은 크게 두 가지 작업으로 분류된다. request : client가 server에 자원을 요청 response : client가 요청한 자원을 server가 응답 Client가 웹 페이지에 요청(request)을 보내면, Server는 client가 요청한 파일을 검색한 뒤 해당 파일을 전달(response)하고, 웹 브라우저가 파일을 처리하게 된다. 이번 포스팅에서는 웹 페이지 요청 작업에 사용되는 requests 모듈에 대해 알아본다. 또한, 실제 웹 상의 데이터와 URL은 어떤 형태로 이루어져 있는지 살펴보려고 한다. 참고할 코드는 아래 링크에서 확인할 수 있다. https://gi..

01. Intro: Word Cloud

웹 크롤링을 하려면 문자열 가공과 list, dictionary 자료형에 익숙해야 한다. 웹 크롤링(Web Crawling)은 웹 서버에서 데이터를 끌어오는 작업을 말한다. JSON 형식 등 웹에서 데이터를 보관하는 방식이 dictionary 형태와 유사하고, 그 외에도 웹 상의 데이터를 dictionary 형태로 가져오는 경우가 많다. 웹 서버에서 끌어온 데이터를 dictionary 형태로 변환하기 위해서는, 텍스트를 가공하고 list 자료형을 다루는 것에 익숙해야 한다. Word Cloud 앞서 언급한 세 가지 자료형을 모두 활용해보기 좋은 몸풀기로 Word Cloud 출력이 있다. Word Cloud는 정보나 데이터를 시각적으로 표현한 것을 말한다. 글자 크기에 빈도나 중요도를 반영하여 특정 형태의..