티스토리 뷰
안녕하세요 INSWAG 입니다.
이번에는 웹 크롤링에 대해 알아보려고 합니다.
무엇을 하면 좋을까 고민하다 이번에 FrenchVoca 에 웹 크롤링을 이용한 새로운 컨텐츠를 만들어보기로 했습니다.
그 과정을 함께 살펴보도록 하겠습니다.
Q. 크롤링이란?
- 크롤링 혹은 스크레이핑은 웹 페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 행위를 말합니다. (나무위키)
Q. 주의점
- 웹 페이지를 크롤링 할 때, 페이지가 크롤링을 허용하고 있는지 살펴봐야 합니다.
- 보편적 사용에는 문제가 보통 발생하지 않지만, 이를 이용해 상업적인 이득을 취할 경우에 문제가 발생할 확률이 큽니다.
Q. iOS 의 대표적인 크롤링 라이브러리는 무엇이 있나요?
- Kanna (https://github.com/tid-kijyun/Kanna)
- SwiftSoup (https://github.com/scinfu/SwiftSoup)
여기서 저는 SwiftSoup 을 이용해보도록 하겠습니다.
위 주소의 Readme.md 파일을 통해 라이브러리를 설치합니다.
참, 오늘 크롤링을 진행할 사이트를 말씀드리지 않았군요.
바로 주한 프랑스문화원(https://www.institutfrancais-seoul.com/ko/) 홈페이지 입니다.
프랑스문화원에서는 프랑스 관련 다양한 문화/공연/예술 등의 정보를 제공합니다.
메인 페이지에서는 준비 중인 이벤트 / 진행 중인 이벤트로 나뉘어 정보를 제공하고 있습니다.
이 중에서 저는 아래의 내용중 굵게 표시된 이벤트의 Title 과 Image 를 크롤링해보도록 하겠습니다.
그럼 여기서 어떻게 해야 할까요?
프로그래밍을 시작하고 iOS 만 주구장창 해온 개린이는 멘붕에 빠지고 맙니다.
Readme.md 파일을 봐도 통 이해가 되지 않는 개린이..
그래서 급하게 웹 개발을 하고 있는 친구에게 전화를 걸게 됩니다...
"... (중략) 이제 이걸 가져오면 되는데 어떻게 가져와야 하는거니?"
전화를 통해 해결책을 찾은 개린이는 크롬을 켜서 사이트에 접속 후 개발자 도구를 클릭합니다.
어린 시절 HTML 을 배우다가 질려버린 기억이 떠오른 개린이는 당황하고 맙니다.
저것이 글자가 맞기는 한데... 아닌 것 같기도 하고..
아무래도 웹쪽 개발 지식이 필요한 모양입니다.
그래서 하루 종일 열심히 구글링을 하고 친구에게 전화를 한 결과,
먼저, 글자가 가리키고 있는 위치를 찾아내야 한다는 것을 알게되었뜹니다.
위의 사진처럼 이미지 주소와 타이틀을 발견했습니다!!!
하지만 Swift 에서 보던 문법이 하나도 보이지 않기에 저 글자들이 무엇인지 학습이 필요해 보입니다.
그래서 열심히 친구를 붙잡고 하나하나 물어갑니다.
결국 저 부분을 가져오려면 저 부분을 담당하고 있는 div class 의 값을 가져와야 한다는 것을 알게되었습니다.
파일을 생성하고 라이브러리를 import 합니다.
준비 중인 이벤트 / 진행 중인 이벤트의 div class 명이 다르므로, 두 function 을 선언해 각각 가져오기로 합니다.
(함수 이름이 뭔가 마음에 들지 않지만 리팩토링은 완성 후에 진행하기로 합니다)
준비 중인 이벤트 코너를 예시로 가져와보도록 합니다.
코드를 실행해볼까요?
원하는 Title 과 Image 가 도착했습니다.
성공했습니다!!!
하지만 뭔가 코드에 리팩토링이 필요해 보입니다.
개린이는 지금 뭔가 마음에 들지 않아 보입니다.
그래도 하나의 벽을 넘었으니 한번 숨을 내쉬고 쉬어가봅니다...
여기까지 SwiftSoup 을 이용한 크롤링에 대해 살펴보았습니다. 감사합니다.
'Programming > iOS' 카테고리의 다른 글
iOS - 델리게이션 패턴(Delegation Pattern) (0) | 2019.12.23 |
---|---|
iOS - TextField 를 가리는 키보드(Keyboard)를 해결하기 (NotificationCenter) (2) | 2019.12.18 |
iOS) 앱 스토어에 앱 올리기 4탄(UserNofitication in Swift) (2) | 2019.11.14 |
iOS) 애플 개발자 프로그램 등록 후기(Apple developer program) (0) | 2019.10.18 |
iOS - Core Image tutorial(코어 이미지 튜토리얼) (5) (0) | 2019.05.17 |
- Total
- Today
- Yesterday
- Swift
- ios
- function
- GCD
- 컨버전
- lifecycle
- fastcampus
- Dictionary
- 열거형
- 스위프트
- 깃허브
- ARC
- 타입
- 리터럴
- swiftUI
- 딕셔너리
- commit
- iOS개발스쿨
- 패캠
- var
- fallthrough
- tca
- 패스트캠퍼스
- Operator
- OOP
- inswag
- 프로그래밍
- 튜플
- 개발스쿨
- array
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |