기본 콘텐츠로 건너뛰기

[Python DS] Data Crawling

Programming language Go enters TIOBE index top 10

파이썬은 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입니다.


  • 구글 뉴스 크롤링하기


가장 먼저 코딩에 필요한 라이브러리를 설치하고 가져옵니다.

urllib.request는 URL을 가져오기 위한 파이썬 모듈입니다.


이후 urlopen 함수를 통해 웹주소를 가져온 후, BeautifulSoup 함수를 통해 접근하여 파싱합니다.


만약 구글뉴스 창의 모든 링크를 크롤링하고자 한다면, 'a'태그의 하이퍼링크 속성을 가진 'href' 를 이용하여 프로그래밍합니다.

여기서 find_all()함수는 검색된 전체 태그를 반환하는 함수이며, strip()함수는 문자열에서 앞뒤 공백을 제거하여 반환하는 함수입니다.


또한 만약 구글뉴스 창의 모든 이미지를 크롤링하고자 한다면, 'img'태그의 이미지소스 url 속성을 가진 'src'를 이용하여 프로그래밍합니다. 이 경우 모든 이미지의 링크를 출력할 수 있습니다.



  • 성균관대학교 공지사항 홈페이지 크롤링하기



이번에는 성균관대학교 공지사항 홈페이지에서 [채용/모집]에 해당하는 공지글 제목을 크롤링해보겠습니다.

마찬가지로 홈페이지 주소를 가져온 후 파싱합니다.


웹사이트에서 개발자도구페이지 (단축키 F12)를 사용하면 웹페이지의 구조에대한 태그를 확인할 수 있는데, 여기서는 공지글의 제목에 해당하는 태그의 class를 확인하여 이를 크롤링할 수 있도록 작성하였습니다. 

이후 'strip=True' 설정과 in 연산자 '[채용/모집]' 부문의 공지글 제목을 텍스트만 출력받으면 됩니다.




이와 같이 데이터 크롤링을 통해 외부 데이터에 접근하고 원하는 항목을 수집할 수 있습니다.


 


Author: Jiwon Min

이 블로그의 인기 게시물

[글로벌 IT전문가와 킹고인의 만남 시즌2] 행사 신청/참석 안내

  글로벌 IT전문가와 킹고인의 만남 시즌2에 대해 많은 관심 감사드립니다! 본 웹페이지를 통해서 학우님들의 원활한 행사 신청 및 참석을 위해 GDSC Community Platform 사용법을 안내드리고자 합니다 [카카오톡으로 링크 접속하신 경우 안내] 카카오톡 내장 브라우저에서 Google 로그인 시 "액세스 차단됨: Bevy의 요청이 Google 정책을 준수하지 않습니다"로 표시되는 사례가 확인되었습니다. 구글 계정 보안 정책상 카카오톡 내장 브라우저 내 로그인을 허용하지 않은 관계로, 디바이스에 설치된 기본 브라우저(Google Chrome 등)를 통해서 신청하시길 바랍니다. 👉 글로벌 IT전문가와 킹고인의 만남 시즌2 신청하기 플랫폼 인프라스트럭처 운영사/제공자: Google LLC/Bevy Labs, Inc. 행사 신청하기 1. GDSC 이벤트 플랫폼 웹사이트에서 구글 계정을 이용해서 로그인을 합니다. 2. (처음 로그인하는 경우) Sign up 페이지에서 필요한 정보를 입력합니다. 3. 로그인인 된 상태일 경우 "RSVP for this event now!" 아래에 온라인/오프라인 참석을 선택할 수 있습니다. 희망하시는 참석 방법 오른쪽에 있는 RSVP 버튼을 클릭하시면 됩니다. 4. RSVP 클릭 후 참석자 (Attendee Information) 입력하세요. (한글 설명, 학번, 전공 등) 5. RSVP Confirmed가 표시될 경우 신청이 완료되었음을 확인하실 수 있습니다. 행사 참석하기 (온라인) 행사가 시작될 경우 행사 웹페이지에서 [Join Event] 버튼이 표시됩니다. [Join Event] 버튼을 클릭하시면 바로 참석하실 수 있습니다. 참고: 행사 신청하신 경우 시스템 상 자동으로 이메일을 통해서 안내드립니다.

[62회] 매년 바뀌는 프론트엔드 분야에서 개발자가 살아남는 방법 - 글로벌 IT전문가와 킹고인의 만남 시즌2 예순두번째 만남

글로벌 IT전문가와 킹고인의 만남 시즌2 62회차 강연자를 소개합니다! 안녕하세요, 미래의 IT 리더 여러분! 세계적으로 인정받는 글로벌 IT 전문가 Naman Gupta가 성균관대학교를 방문해 대학생들을 대상으로 특별한 강연을 개최합니다. Naman Gupta 님는 Neurotone AI의 시니어 소프트웨어 엔지니어로 활동하며, Google Developer Groups 뉴델리의 공동 조직자이자 Google Summer of Code 2017 수상자입니다. Naman Gupta 님의 강연에서는 인공지능, 머신러닝, 웹 개발 등 최신 IT 트렌드와 혁신적인 제품 개발 방법을 배울 수 있습니다. 또한, 글로벌 기업에서의 커리어 쌓기와 스타트업 창업 노하우도 공유할 예정입니다. 특히 IT 분야에 관심 있는 대학생들에게 큰 도움이 되는 만큼 많은 참여 부탁드립니다! 매년 바뀌는 프론트엔드 분야에서 개발자가 살아남는 방법 Surviving as a Developer in the Ever-Changing Frontend Field 📆 일시: 2024년 9월 12일(목) 12:00 ~ 13:00 💡 강연방식: 온/오프 하이브리드 강연 🔎 강연자: Naman Gupta (GDG New Delhi/University of Wisconsin-Madison) 🎬 강연참여 - 오프라인 강연 참여 (20명 선착순) : 자연과학캠퍼스 삼성학술정보관 2층 솦ː공방 인(仁) 480209호 - 온라인 강연 참여 : 신청자에 한하여 신청 이메일로 강연링크 발송 * 오프라인 참여 학생 : 약속을 지키는 성균인! NoShow 불가! 🏆 참석혜택 - 오프라인 참석 학생들에게 간단 도시락 증정 (종료 후)  - 온/오프 참석 전원 AI품 비교과 1시간 인정 - 온/오프 참석 전원 킹고코인 마일리지 10코인 부여 👉 신청방법 가이드: https://gdscskku.blogspot.com/2024/03/itglobalseminar-help.html 👉 행사 참석 URL (신청 필요...

[모집] 2024학년도 1학기 신규인원 모집: 3/10(일) 마감

안녕하세요, 구글 기술 앰버서더, 성균관대학교 Google Developer Student Clubs 입니다! GDSC (Google Developer Student Clubs)는 Google에서 학생들이 개발/리더십 능력을 향상할 수 있도록 지원하는 대학생 커뮤니티 프로그램입니다. 성균관대학교 GDSC는 구글 코리아, Google for Developers, SW중심대학사업단 등 다양한 단체와 협업하여 구글 기술을 대중에 알리고 관련 행사를 주최하며, 이러한 프로그램을 통해 협업성, 인적 네트워킹 및 리더십을 향상할 수 있습니다.

[11월 행사] 머신러닝/인공지능 (ML/AI) 스터디 워크샵: 사전 신청 오픈! — Google Developers 전문가와 함께하는 머신러닝/인공지능 학습, 텐서플로우 실습 및 네트워킹 기회! (11/9 사전신청 마감)

  👉 사전 신청 종료 추가적인 사전 신청을 원하시는 경우 연락 페이지 를 통해서 문의하시길 바랍니다. 업데이트 (11/8): 본 행사는 정책상 참여자 분들께서 요청하실 경우 행사 참여 확인서를 발급해드릴 예정입니다. 행사 참석 당일날 스태프 분께 말씀하시면 됩니다. 업데이트 (11/9):  상세한 행사 정보가 부분적으로 오류가 있어서 정정했습니다. (행사 시작 시간은 변경되지 않았습니다.) 기타 문의하실 사항이 있으실 경우 연락 페이지를 통해서 문의주시면 감사하겠습니다.   안녕하세요, 성균관대학교 Google Developer Student Club (GDSC) 입니다. Google Developers 전문가 분들과 함께 저희 GDSC SKKU TensorFlow 팀에서 11월 10일 💻November ML/AI Study Workshop💻을 주최합니다! 👏🏼 프로그램에서는 TensorFlow 기초 이해부터 주요 신경망 모델링 및 학습까지 TensorFlow 기술 전반에 대한 실습이 진행되며 관련 전문가 분들과의 네트워킹 기회가 제공될 예정입니다. 🍔 또한 본 행사에서는 참가자분들을 위한 간식, 음료와 간단한 저녁식사도 준비되어 있습니다! 👇🏼 이벤트 상세 내용은 아래와 같습니다. 📍 일시: 11월 10일 (금) 16:00 ~ 20:30 📍 장소: 자연과학캠퍼스 화학관 1층 330102 첨단강의실 📍 참가대상: 성균관대학교 학부생 누구나 📍 프로그램 내용 I. TensorFlow 기초 이해 II. 주요 신경망 모델링 및 학습 (CNN, Cloud Run, RNN) III. 종료 및 네트워킹 📍 진행자 이영빈 님 (GDG Songdo Organizer) 한상준 님 (GDG Songdo Organizer) 권정민 님 (Google Developer Experts) 장현수 님 ((전)성균관대학교 박사) 📍 사전 신청링크 https://gdscskku.blogspot.com/mlai-study   머신러...

[6월 행사] 스타트업을 할 만한 사람은 따로 있을까?— 글로벌 IT전문가와 킹고인의 만남 시즌2 (60회차)

  스타트업을 할 만한 사람은 따로 있을까? 이 질문에 대한 답을 찾고 싶다면 이번 세미나를 놓치지 마세요! 테일트리의 임수미 님을 초청하여 진행되는 이 특별한 세미나에서 스타트업 창업에 필요한 자질과 역량에 대해 깊이 있는 이야기를 들어볼 수 있습니다. 다양한 경험을 바탕으로 한 실제 창업 과정과 도전 과제들을 공유하며, 성공적인 스타트업을 위한 전략과 팁을 배울 수 있는 절호의 기회입니다. 창업에 관심 있는 분들, 혹은 스타트업을 시작하고자 하는 분들을 위한 이번 세미나에 참여해보세요!   https://gdsc.community.dev/j/4cpmuqyazwckd/