모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    BePositive님의
    개인페이지입니다
    가입 : 11-09-19
    방문 : 1489회
    닉네임변경 이력
    회원차단
    회원차단해제
    게시물ID : computer_69011
    작성자 : Ksana
    추천 : 6
    조회수 : 2576
    IP : 190.178.***.34
    댓글 : 1개
    등록시간 : 2012/12/18 08:36:59
    http://todayhumor.com/?computer_69011 모바일
    파이썬 강좌? 네이버 웹툰 저장하기 #3
    <span style="font-size: 12px;" id="writeContents" class="ct lh"><p> <span class="ct lh" id="writeContents" style="font-size: 12px;"><span class="ct lh" id="writeContents" style="font-size: 12px;"><strong><span style="color:#f00;"><span style="font-size: 22px;">주의 사항!</span></span></strong></span></span></p> <p> <br> <span class="ct lh" style="font-size: 12px;"><span class="ct lh" style="font-size: 12px;">사실 고민을 많이 했습니다. 저작권이 걸린 매체를 가지고 물의를 일으키지는 않을까 해서요.</span></span></p> <p> <span class="ct lh" id="writeContents" style="font-size: 12px;"><span class="ct lh" id="writeContents" style="font-size: 12px;">분 명히 밝힙니다. 본 문서는 python을 파이썬을 학습에 조금이나마 도움을 주기 위한 목적으로만 작성되었습니다. 수집한 각 웹툰은 저작권이 허용하는 범위 안에서만 이용하십시오. 웹툰의 감상은 웹사이트를 통해 하시기 바랍니다. 이 문서를 보시는 분들의 상식을 믿겠습니다.</span></span></p> <p>  </p> <p>  </p> <p> <span style="font-size:24px;">1. HTML 분석하기</span><br> <br> 다시 한 번 강조합니다. 저는 이 문서를 그저 학습용으로만 제작하였을 뿐이고, 단순히 만화 이미지가 로컬 PC에 저장되는 것 자체만으로는 각 만화에 대한 저작권에 대한 침해가 아니라고 알고 있기에 본 문서를 공개하는 것입니다. 절대 저작권의 범위를 벗어나는 행동은 하지 마시기 바랍니다.<br> <br> 그럼 실제 웹툰 하나를 골라서 HTML을 분석해보도록 하겠습니다. 인기 연재중인 '마음의 소리'를 예로 들도록 하지요. 웹브라우저에 접속해서 주소를 살펴보면,'마음의 소리'의 titleId는 20853인 것을 알 수 있습니다. 그리고 weekday=tue 변수/값 쌍이 추가로 웹브라우저 주소란에 있는 것을 확인할 수 있습니다. 그러나 weekday 변수와 값은 삭제해도 문제가 없습니다.<br> <br> 이제 만화의 각 회차에 접속해 보세요. 그러면 주소에 새로운 변수 쌍인 no=XXX가 생긴 것이 보일 것입니다. 그러므로 네이버 웹툰은 titleId 변수로 각 작품을 구분하고 no 변수로 각 회차를 구분하고 있는 것입니다.<br> <br> 그럼 각 만화의 이미지 태그가 어디에 위치하는지를 알아야 하겠죠? 웹브라우저의 소스 보기 등으로 네이버 웹툰의 소스를 직접 분석해 보아야 합니다. Firefox의 '문서 검사' 기능 등을 통해 HTML 문서의 구조를 보다 손쉽게 파악할 수도 있습니다. 사실 웹툰 이미지에 대해 저작권 보호를 위해 보호 장치를 걸어 쉽사리 웹툰을 퍼갈 수 없도록 제한할 수도 있습니다. 그런 조치를 취할 수도 있지만 굳이 하지 않음을 참 다행으로 생각합니다.<br> <br> 이전 장에서 우리가 만든 프로그램을 통해 웹페이지의 HTML 소스를 다운로드 받아 보기로 하지요.<br> 마음의 소리 691화의 페이지 소스를 다운로드 받는다고 하면,<br> <br> python gethtml.py "http://comic.naver.com/webtoon/detail.nhn?titleId=20853&no=691" "마음의소리_691.html"<br> <br> 처럼 쓸 수 있겠네요. 문서를 열어 div class=“wt_viewer” 부분을 찾아 봅니다. div 아래에 img 태그가 있을 것입니다. 각 img 태그가 웹브라우저에 그림을 보여주는 역할을 합니다. img의 src 속성을 복사해서 웹브라우저의 주소창에 붙여넣기해 만화의 이미지가 맞는지 확인해 봅니다. 속성은 대략 <a target="_blank" href="http://imgcomic.naver.com/webtoon/20853/691/XXXXXXXXX.jpg" target="_blank">http://imgcomic.naver.com/webtoon/20853/691/XXXXXXXXX.jpg</a> 가 될 겁니다. 고맙게도 별 제재 없이 만화 이미지를 보여 주는 것을 확인할 수 있습니다. 만일, 이렇게 해서 만화 이미지가 보이지 않는다면 이 문서는 아무 쓸모가 없어집니다.</p> <p>  </p> <p>  </p> <p> <span style="font-size:24px;">2. HTML에서 이미지만! 정규식을 사용하자</span><br> <br> 앞서 각 회차의 만화는 단순히 img 태그만을 이용해서 보여지는 것을 확인했습니다. 그러면 img 태그 중에서 만화를 보여주는 img 태그만 골라내서 src 부분의 주소를 추출해낼 수 있다면 각 이미지 파일에 대해 손쉽게 접근 가능하게 될 것입니다.<br> <br> 이렇게 하려면 원래 웹브라우저가 하는 것처럼 이 복잡한 HTML 태그를 모두 파싱(parsing)해야 합니다. 그러나 여기서는 정규식을 이용한 문자열 검색만으로도 원하는 결과를 손쉽게 얻어낼 수 있습니다.<br> <br> 정규식(regular expression)에 대해 본 문서에서 모든 것을 설명하기는 어렵습니다. 인터넷에 자료가 많으므로 쉽게 찾아볼 수 있습니다. 여기서는 사용된 구문에 한해 설명을 하도록 하겠습니다. 결론적으로 img의 src 속성을 추출하기 위한 정규식 구문은<br> <br> <img.+?src="(http://imgcomic\.naver\.com/webtoon/[0-9]+/[0-9]+/(.+?\.(jpg|png|gif)))".*?><br> <br> 입니다. 처음 보시는 분은 마치 암호와 같아 보일 것입니다. 천천히 설명하도록 하겠습니다.<br> <br>     - <img 는 당연히 문서에서 'img' 태그가 시작되는 부분을 뜻합니다.</p> <p> <br>     - .+? 세 문자는 다음과 같은 의미를 지닙니다.<br>        +  img 다음의 점(.)은 '아무 문자'를 의미합니다. 숫자, 영문자, 한글, 공백 어떤 것이든 딱 '한 글자'를 의미합니다.<br>       + 점 다음의 더하기 기호(+)는 '1회 이상의 반복'을 의미합니다. 그리하여 .+는 어떤 글자든 한 번 이상 반복되는 것을 의미합니다.<br>       +  더하기 기호 다음의 물음표(?)는 이러한 문자 매칭이 최소한만으로 이뤄지도록 조정하기 위함입니다.<br>         앞서 .+가 어떤 문자든 나와도 좋다는 의미라고 하였습니다. 그렇다면 HTML의 <img 이후는 .+가 통째로 삼켜버릴 수 있는 부작용이 있습니다. 그런 건 우리가 원하는 결과 아닙니다. .+?는 단지 img 태그명과 src라는 속성 사이에 붙을 수 있는 공백, 혹은 우리의 목적과 관계 없는 속성 부분만을 걸러내기 위한 장치입니다.</p> <p> <br>     -  괄호 부분은 캡쳐라고 하는데, 나오는 순서대로 정규식 내부에서 매칭되는 부분의 문자열을 얻어내기 위한 수단으로 사용되거나 괄호 안의 부분을 우선적으로 적용할 것을 의미합니다. 괄호는 세 번에 걸쳐 있습니다. http:// 가 나오는 부분과 /(.+?\.(jpg|png|gif))) 가 그것입니다. 첫번째(바깥쪽) 괄호는 src 속성의 값을 모두 추출하기 위한 것이고, 두번째(중간) 괄호는 파일 이름만을 추출하기 위한 것입니다. 세번째(가장 안쪽) 괄호는 여러 확장자를 융통성 있게 받아들이기를 위해 사용되었습니다.</p> <p> <br>     - '\.' 처럼 쓴 것은 점이 어떤 문자든 상관 없다는 뜻이 아니라, 정말 '점'으로 사용되기를 원한다는 뜻입니다.</p> <p> <br>     - [0-9]는 0에서 9사이 어떤 한 숫자를 의미합니다. [0-9] 바로 뒤에 '+' 기호가 붙어 숫자가 1회이상 반복됨을 의미합니다.</p> <p> <br>     - \.(jpg|png|gif)는 .jpg거나 .png거나 .gif중 어느 하나이면 된다는 뜻입니다.</p> <p> <br>     - 마지막으로 '.*?>' 부분은 img 태그가 끝나기 전까지 어떤 문자가 있어어도 되고, 없어도 상관이 없다는 말입니다. 다음 태그를 건드리지 않기 위해 ?를 덧붙였습니다.<br> <br> 다운로드 받은 파일에서 정규식이 정말 만화 이미지만 추출하는지 확인해 보도록 하겠습니다.<br> <br> tractimgli.py<br><br>    # -*- coding: cp949 -*-<br>     <br>    # 정규식을 사용하기 위한 모듈입니다.<br>    import re, sys<br>     <br>    # html에서 만화 이미지 주소를 얻기 위한 함수<br>    def tractimgli(html):<br>        exp = re.compile(r'<img.+?src="(http://imgcomic\.naver\.com/webtoon/[0-9]+/[0-9]+/(.+?\.(jpg|png|gif)))".*?>')<br>        imgli = exp.findall(html)<br>        return imgli<br>     <br>    # 메인함수<br>    def main(argv):<br>        if len(argv) != 2:<br>            print 'Usage: tractimgli.py <filename>'<br>            return 1<br>     <br>        f = open(argv[1], 'r')<br>        html = f.read()<br>        f.close()<br>     <br>        imgli = tractimgli(html)<br>        if len(imgli) == 0:<br>            print >> sys.stderr, "No images!"<br>            return 1<br>     <br>        for img in imgli:<br>            print img[0] # full link<br>            print img[1] # file name<br>            print img[2] # extension<br>     <br>        return 0<br>     <br>    # 파이썬은 스크립트 언어이므로 C/C++와 같이 main함수를 먼저 실행하지 않습니다.<br>    # 본 파일을 실행했을 때 main() 함수가 실행되기 위한 처리를 직접 해야 합니다.<br>    if __name__ == '__main__':<br>        sys.exit(main(sys.argv))<br> <br> 정확한 정규식의 표현을 적는 것은 꽤 까다로운 일이지만, 정규식을 코드에 사용하는 것은 어렵지 않습니다.<br> <br> regexp = re.compile(r'<정규표현식>')   # 정규표현식 선언, 객체로 만듬<br> imgs = regexp.findall(html)           # html 문자열에서 정규표현식에 부합하는 모든 부분을 img로 리턴</p> <p> <br> <br> <span style="font-size:24px;">3. 만화 이미지만 저장하기</span><br> <br> 코드가 올바르게 동작해서 html 문서에서 원하는 만화 이미지의 주소만 얻어낼 수 있었습니다. 이제 각 이미지들을 우리 PC에 저장하는 코드를 작성해야 합니다. 이것은 여러분들에게 숙제로 남겨 두겠습니다. 기존의 urllib2 모듈을 이용해서 각 이미지의 주소에 접속해, 응답 내용을 바로 파일에 쓰기만 하면 됩니다. 이 때 open 함수의 두번째 인자는 'wb'로 바이너리 쓰기를 하게 됨을 잊지 마세요.</p> <p>  </p> <p>  </p> <p> <span style="font-size:24px;">4. 끝마치며</span><br> <br> 파이썬에 흥미를 느끼신, 프로그램에 갓 입문하신 분들에게 좋은 실습거리일 것 같아 본 문서를 공개하였습니다. '웹툰'이라는 매체는 엄연히 저작권이 있는 매체입니다. 이를 이용한 본 실습은 자칫 흥미는 있을지 모르나 웹툰 작가님들과 여러 관계자분들께 누를 끼치는 행위가 되지 않을까 많이 염려하였습니다.</p> <p>  </p> <p> 여러 번 밝혔듯 저는 파이썬 학습을 위해 이 문서를 공개하였습니다. 프로그래밍에 대한 순수한 흥미와 호기심만으로 실습을 진행해 주십시오. 이 문서가 전달한 것들은 정말 얕디 얕은 지식에 불과합니다. 이러한 얕은 지식으로 다수에게 누를 끼치는 행위는 삼가하길 간곡히 부탁드립니다.<br>  </p> </span><p><br></p>

    이 게시물을 추천한 분들의 목록입니다.
    [1] 2012/12/18 08:43:01  121.175.***.72  환  67699
    [2] 2012/12/18 09:04:47  210.183.***.244  구차니  168644
    [3] 2012/12/18 09:27:20  110.70.***.95  시골푸마  311792
    [4] 2012/12/18 10:02:36  203.244.***.24  miri  30844
    [5] 2012/12/18 10:03:41  211.58.***.78  씨디맨  111938
    [6] 2013/05/14 13:38:47  114.111.***.249  꼼울  2414
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    44
    고행 3단 1막을 해보았습니다. 루저녀석 14/03/20 23:41 145 2
    43
    1억대 데미지!! [2] 루저녀석 14/03/20 01:43 354 0
    42
    캐릭터의 능력치를 편하게 텍스트로 출력하는 D3Profile 루저녀석 14/03/19 19:49 133 0
    41
    고행 2단 4막이 끝났습니다. 루저녀석 14/03/18 21:49 80 0
    40
    3막 파밍 결과입니다. 아놔 ㅋㅋ [4] 루저녀석 14/03/18 14:12 273 3
    39
    2막 파밍의 결과입니다. 잡설이 많습니다. [4] 루저녀석 14/03/18 07:59 494 5
    38
    능력치를 텍스트 파일로 만들어 드리는 d3profile 입니다. [1] 루저녀석 14/03/18 01:14 59 0
    37
    디아블로 아기코끼리 [8] 루저녀석 14/03/17 16:17 352 2
    36
    흰색 템도 꼬박꼬박 먹어야겠군요.. 루저녀석 14/03/17 16:17 174 0
    35
    1막 파밍 결과: 불멸왕 신발 -> 장갑 -> 투구 [2] 루저녀석 14/03/17 03:04 234 0
    34
    싱글 플레이지만, 우군으로 우글우글 [3] 루저녀석 14/03/16 17:14 228 1
    33
    어젯밤에 불멸왕 신발 득하고, 오늘은 장갑 득하고! 루저녀석 14/03/16 17:12 118 0
    32
    겜이 이렇게도 바뀌는구나... [1] 루저녀석 14/03/16 05:03 255 6
    31
    계정귀속 아이템 빌려주는 기능 있나요? 없음 생겼으면 좋겠네요. [1] 루저녀석 14/03/15 23:44 51 0
    30
    예언(성지) 게시판 있으면 재밌을거 같네... 루저녀석 14/03/14 19:23 14 0
    29
    포인터의 벽? [3] _Loser_ 14/03/07 21:39 27 0
    28
    C 초보가 흔히 하는 삽질성 코드에 대해 조언을 드립니다. [2] Ksana 14/03/06 23:01 36 1
    27
    레벨 39짜리가 초당 공격력 1200대 단도를 쓸 수 있엉! [2] Ksana 14/03/05 04:10 319 1
    26
    논논비요리 4화 (개인적으로 최고의 명장면) Ksana 14/03/04 12:00 64 3
    25
    예상컨데... Ksana 14/03/02 02:06 19 1
    24
    무궁화 꽃이 피었습니냥! Ksana 14/02/26 08:54 65 1
    23
    무한로봇대전 vs 사립저스티스리그 [3] Ksana 14/02/22 07:30 187 0
    22
    프로그래밍을 배우고 싶으신 분들 계신지요? [3] Ksana 14/02/06 17:43 52 0
    21
    이 만화 제목이 뭔가요? [1] Ksana 13/12/19 22:20 28 0
    20
    알바 뛰는 마왕님 키사라기 치호 ED 풀샷. [3] Ksana 13/05/10 05:56 110 1
    파이썬 강좌? 네이버 웹툰 저장하기 #3 [1] Ksana 12/12/18 08:36 32 3
    18
    파이썬 강좌? 네이버 웹툰 저장하기 #2 [2] Ksana 12/12/18 08:30 22 2
    17
    파이썬 강좌? 네이버 웹툰 저장하기 #1 Ksana 12/12/18 08:29 88 2
    16
    야만용사로 질주-소용돌이 스킬로 3막을 돌아보았습니다. Ksana 12/09/13 21:41 59 0
    15
    한 방에서 1세트 2전설. [1] Ksana 12/09/08 00:45 242 0
    [1] [2] [3]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈