반응형

네이버 동영상 크롤링

네이버를 시작으로 유튜브와 구글의 동영상 크롤링에 대한 내용을 다룰 예정입니다.

들어가기 전에

크롤링을 통해서 얻은 동영상을 재업로드하는 경우 저작권 위반에 해당될 수 있습니다.

개인 공부용으로 작성된 글입니다. 참고하시는 분들도 공부용으로만 봐주시면 감사하겠습니다.

 

준비하기

작업환경 : Jupyter notebook

사용 라이브러리 : selenium, urllib

네이버 동영상은 " https://tv.naver.com " 의 동영상을 기준으로 하였습니다.

 

1. 동영상 저장 확인

먼저 url로 동영상이 저장되는지 확인해보도록 하겠습니다.

 

간단하게 이전에 다뤘던 구글 이미지 크롤링과 동일한 방법으로 영상 링크를 갖고 와서 저장하는 방법으로 시작해보겠습니다.

동영상 링크

크롬의 [검사] 기능을 이용해서 동영상의 소스를 찾아봤습니다.

 

보이는 것처럼 src 이하의 주소가 동영상의 소스가 됩니다.

 

동영상 주소로 들어갔을 경우

해당 동영상 링크를 주소창에 입력하면 위와 같은 화면을 볼 수 있습니다.

 

해당 영상이 저장이 가능한지 urllib를 이용해서 확인해보겠습니다.

 

동영상 저장

간단하게 저장되네요.(용량은 약 45MB)

 

2. XPath로 동영상 url 갖고 오기

매번 위와 같은 수작업으로 동영상의 url을 확인하는 방법은 크롤링이라고 할 수 없겠죠.

XPath를 이용해서 동영상의 url을 갖고 와 보겠습니다.

 

XPath 복사하기

복사해봤더니

     //*[@id="rmcPlayer_15550522065636948.video"]

라는 값이 저장되는 것을 볼 수 있었습니다.

 

위와 같은 형식의 id값은 동영상마다 id값이 다를 수 있기 때문에, id값이 아닌 class나 div 틀을 갖고 오는 방법이 필요합니다.

 

id 제거

위와 같이 검사 부분을 보게 되면, id = "rmcPlayer_~~~"라고 되어있는 부분이 있습니다.

동영상의 url을 시작으로 상위의 요소에 붙은 위와 같은 id 값들을 전부 제거하고 다시 XPath 값을 갖고 와 보겠습니다.

 

중간에 id = "player"라고 되어있는 부분부터 동영상의 url까지의 id값을 제거해주시면 됩니다.(총 3개)

 

다시 XPath값을 갖고 와서 보니 아래와 같은 값을 얻을 수 있었습니다.

 

//*[@id="player"]/div/div/div[11]/div[13]/video

 

div가 반복되는 게 마음에 안 들지만, 일단 넘어가겠습니다.

 

위의 XPath를 이용해서 url을 얻어와 보겠습니다.

 

url 얻어오기

위와 같은 방법으로 동영상의 url을 얻어올 수 있었습니다.

 

3. 코드 종합

일단 여기까지 코드를 정리해보겠습니다.

 

코드정리

위와 같이 몇 줄 안 되는 코드로 원하는 주소의 동영상을 저장할 수 있었습니다.

 

그럼 이제 몇 가지 문제점을 집고 다음으로 넘아가겠습니다.

 

4. 문제점 확인

네이버의 동영상을 보기위해 웹페이지에 접속하면 자동으로 영상이 재생됩니다.

 

다만, 다들 아시겠지만, 영상의 시작전에 볼 수 있는게 있습니다.

 

바로 광고 입니다. 물론 모든 영상에 광고가 붙지는 않습니다. 아래와 같은 3가지 경우가 있습니다.

 

1) 광고없음 : 광고가 없는경우 위와같이 time.sleep(2) 정도면 웹페이지가 영상의 링크를 갖고오기까지 충분한 시간이 됩니다. 이상적이죠...

2) 5/15초 광고 후 스킵

3) 15초 광고 후 재생

2와 3의 경우 위의 코드를 그냥 실행하게되면 원하는 동영상이 아니라 광고가 파일로 저장되게됩니다.

때문에 이 문제들을 해결하는 방법을 다음 글에서 보도록 하겠습니다... (지금부터 연구...)

 

따라서 다음영상은 2번(5/15초 광고 후 스킵)의 문제를 해결하는 방법을 다루겠습니다.

다음으로 3번(15초 광고 후 재생)

마지막으로 멀티프로세싱을 이용하여 원하는 영상들을 한번에 수집하는 방법을 다루겠습니다.

 

따라서 총 4편을 구성될 예정입니다.

 

반응형
반응형

[Swift OSX] 1. 개발 준비

 

작성일 기준 최신 Xcode와 Swift버전을 사용하였습니다.

1. 개발 준비

MAC OS 개발도 IOS개발과 마찬가지로 맥(맥북)에서만 개발이 가능합니다.(윈도우, 리눅스 환경에서는 불가능~!)

 

맥에서 개발을 시작하면 먼저 Xcode라는 녀석이 필요합니다. App Store에 들어가셔서 설치해주세요.

 

설치가 끝나셨다면 아래와 같은 과정으로 이동해주세요.

 

 

[Create a new Xcode project] 클릭

 

[macOS -> Cocoa App -> Next] 클릭

 

[Product Name, Language=Swift, Use Storyboards 채크 -> Next] 클릭

 

 

위와 같이 프로젝트를 생성해주면 기본적인 세팅은 끝입니다.

 

다음은 화면 구성입니다.

 

Xcode 화면 구성

위와 같이 Xcode는 3가지 부분으로 나눠지게 됩니다.

(Inspector 영역은 Utilites 영역이라고 불리는 경우도 있습니다.)

 

Library는 화면 구성에 필요한 다양한 아이템들을 불러올 수 있습니다.

 

시작버튼 클릭시 실행화면

프로젝트 생성 후 바로 실행 버튼을 클릭하면 위와 같이 아무것도 없는 빈 화면이 실행되는 것을 볼 수 있습니다.

 

여기까지 완료되면, 개발 준비는 일단 끝이라고 볼 수 있습니다.

 

다음으로는 간단한 UI 구성에 대해서 알아보겠습니다.

 

 

Xcode 정말 편하게 만들려고 노력했지만, 불편한 프로그램이 아닐 수 없습니다...

제작자의 의도를 벗어난 다양한 버그들이 힘들게 하는 프로그램이죠... ㅠㅠ

반응형
반응형

[Swift OSX] 0. Swift로 시작하는 OSX 프로그래밍

Swift x OSX


1. 소개

2014년 Swift가 첫 공개되고 5년이라는 시간이 흘렀다. 기존 Objective-C보다 1.5배, Python보다 220배의 빠른 처리속도를 갖고있다고 소개된 이 언어는 애플이 Objective-C를 점점 등한시하고, Swift를 밀면서 많은 IOS개발자들이 Swift로 점차 이동하게하는 모습을 보이게되었다.

하지만, 국내의 경우 OSX에 대해서는 조금 상황이 애매하다.

MAC OS를 사용하는 유저의 수가 이전에 비해서 많이 늘었다고는 하지만, 윈도우에 비하여 압도적으로 적은 상황이다보니 대부분의 개발자들이 굳이 MAC OS를 위해서 개발을 별도로하는 경우가 적은 것 같다.

필요에 따라서 간단한 매크로 프로그램등을 만드는 경우는 있지만, 이러한 프로그램들을 위해서 Swift를 배울 필요는 없다. (Objective-C 조차 필요없는 경우도 많다.)


이러한 이유 때문인지 Swift + IOS에 관련된 강의들은 쉽게 찾아볼 수 있는 반면에, Swift + OSX에 관련된 내용은 해외사이트에 의존할 수 밖에 없는 상황이다.


이제부터 시작될 내용들 역시 99% 해외 사이트에서 얻어온 내용을 번역 & 정리한 내용이 될 것이며, 이들 내용들을 이용하여 간단한 OSX 앱개발을 수행할 예정이다.





꾸벅

반응형

+ Recent posts