[python] html에서 동영상 url파싱하기

글쓴이 Engineer Myoa 날짜

한동안 서버가 꺼져있었는데, 워너크라이에 대한 대응겸 서버유지보수가 필요하여

약 몇 주 정도 내려놓았다. 기말시험이 끝나 OpenCV공부와 진행했던 작업들을 몇 가지 정리해서 올려보려고 한다.

 

얼마전, 개발자 모임에서 한 분이 url 파싱에대해 질문을 올리셨다.

여러 생각이 떠올랐고 좋은 조언들이 올라왔으나, 나는 근본적으로 이런 케이스에서는 정규식을 사용한다고 본다.

따라서 정규식을 사용할 것을 권해주었으나.. 정규식에 익숙치 않다하여 대신 작업을 도와주는 것으로 진행하였다.

 

일단 솔루션내에서 돌아가는 모듈인지 외부에서 스탠얼론하게 돌아가는 기능인지가 중요하여 후자임을 확인하고

샘플용 더미데이터를 받았다.

아마, 개발하는 입장에서 일부 사용데이터를 넘겨준거같아 소스자체를 올리는것은 타사에 피해가 갈 수 있으므로 생략한다..

위와같이 태그(등)이 난무하는 상황에서 스트림가능한 URL을 파싱하는 것을 목표로한다.

 

import re
import getopt
import sys

regex = re.compile(r"((?:https?|s?ftp):\/\/.*\.(?:mp4|mov|asf|avi|flv|swf|mpg|mpeg|wmv))")


def getParse(filename):
    with open(filename, "r") as f:
        data = f.read()
        findData = regex.findall(data)

        return findData

def parseArgv(argv):
    opts, args = getopt.getopt(argv, "hf:", ["file="])
    if opts ==[]:
        print("Exception: need argument as filename")
        exit(-1)


    filename = opts[0][1]
    return filename

if __name__ == "__main__":
    f = parseArgv(sys.argv[1:])
    data = getParse(f)
    for i in data:
        print(i)

1차 코드의 경우에는 ftp와 sftp프로토콜을 못찾았기 때문에 해당부분의 식을 변경하여 http나 https거나, ftp나 sftp인 프로토콜에 대해 찾도록 하였다.

 

 

위는 코드를 돌린 결과이다.

사실 getopt를 리눅스 gcc환경에서 사용하다가 윈도우 환경으로 넘어오니 잘 쓰지않아 사용법도 헷갈리고 그랬는데

이번기회에 getopt를 python에서 사용하는 법을 익히다보니 자연스레 흩어졌던 조각들이 모인 기분이다.

 

 


4개의 댓글

답글 남기기

Avatar placeholder

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다