파이썬은 1991년 발표 된 고급 프로그래밍 언어로,
플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑 대화형 언어입니다.
TIOBE에 따르면 파이썬은 최근 프로그래밍 언어 지수에서 상위권을 유지해오고 있습니다.
[Python Applications]
파이썬의 주요 응용은 두 가지로 분류할 수 있습니다.
1. Data Crawling
인터넷 상의 웹페이지(html, 문서 등)를 수집하고 데이터를 분류하여 저장하는 것입니다.
크롤링을 통해 뉴스 기사와 댓글, SNS 상의 데이터, 공공데이터, 지도, 환율 등 다양한 형태로 존재하며 실시간으로 변화하는 데이터에 접근할 수 있습니다.
requests 모듈, BeautifulSoup 라이브러리, Selenium 패키지를 주로 활용합니다.
2. Data Analysis
아래와 같이, 파이썬에는 데이터 분석을 용이하게 하는 다양한 패키지가 있습니다.
Numpy: 파이썬에서 개발된 선형대수로, 난수를 생성하고 행렬 및 n차원 배열의 복잡한 수학 연산을 처리하는 기능이 있습니다.
Pandas: SQL 데이터베이스, CSV, JSON 파일 및 엑셀과 같이 테이블 형태의 데이터를 다루는 데이터프레임 자료형과 함께 데이터 조작 및 분석을 위한 유용한 툴을 제공합니다.
Matplotlib: histogram, scattered plots, 3D plot과 같이 데이터를 효과적으로 시각화하는 다양한 패키지를 제공합니다.
TensorFlow: 인공지능 기법을 쉽게 구현할 수 있도록 도와주는 구글의 오픈소스 라이브러리로, 자연어 처리, 순환 신경망, 이미지 인식, 손 글씨 숫자 분류와 심층 신경망 처리 등에 유용합니다.
[Data Crawling]
데이터 크롤링의 방식 역시 크게 두 가지로 분류할 수 있습니다.
1. 회사에서 제공하는 API를 사용하여 크롤링
API란 지도, 검색, 주가, 환율 등 다양한 정보를 가지고 있는 웹사이트의 기능을 외부에서 쉽게 사용할 수 있도록 사용 절차와 규약을 정의한 것입니다.
API를 제공하는 웹으로는 공공데이터포털, 세계날씨, 페이스북개발자센터, 네이버개발자센터 등이 있습니다.
이러한 API를 제공하는 웹의 데이터에 접근하는 방식은 유저의 요청과 서버의 응답으로 이루어집니다.
사용자가 서버의 url에 접속하여 수집할 데이터에 대해 HTTP를 요청하면, 서버가 그에 대한 응답을 JSON, XML 형식으로 보내게 됩니다.
2. BeautifulSoup 라이브러리를 이용하여 크롤링
API를 제공하지 않는 웹페이지에서 크롤링을 할 경우에는 HTML 파싱 후 직접 코드를 작성하여 크롤링해야 합니다.
여기서 파싱(parsing)은 파서(parser)에 의하여 html의 구조를 분석하고 원하는 데이터를 특정 패턴이나 순서로 추출하여 가공하는 작업을 뜻합니다.
이러한 파싱을 용이하게 하는 파이썬 라이브러리가 Beautiful Soup입니다.
- 구글 뉴스 크롤링하기
여기서 find_all()함수는 검색된 전체 태그를 반환하는 함수이며, strip()함수는 문자열에서 앞뒤 공백을 제거하여 반환하는 함수입니다.
또한 만약 구글뉴스 창의 모든 이미지를 크롤링하고자 한다면, 'img'태그의 이미지소스 url 속성을 가진 'src'를 이용하여 프로그래밍합니다. 이 경우 모든 이미지의 링크를 출력할 수 있습니다.
- 성균관대학교 공지사항 홈페이지 크롤링하기
마찬가지로 홈페이지 주소를 가져온 후 파싱합니다.
웹사이트에서 개발자도구페이지 (단축키 F12)를 사용하면 웹페이지의 구조에대한 태그를 확인할 수 있는데, 여기서는 공지글의 제목에 해당하는 태그의 class를 확인하여 이를 크롤링할 수 있도록 작성하였습니다.
이후 'strip=True' 설정과 in 연산자 '[채용/모집]' 부문의 공지글 제목을 텍스트만 출력받으면 됩니다.
이와 같이 데이터 크롤링을 통해 외부 데이터에 접근하고 원하는 항목을 수집할 수 있습니다.
Author: Jiwon Min