Skip to main content

Scraping webtoons and some utils for it

Project description

이 설명은 최신 버전이 아닐 수 있습니다. 만약 최신 버전을 확인하고 싶으시다면 여기를 참고하세요.

WebtoonScraper

웹툰을 다운로드하는 프로젝트입니다. 그 외에도 웹툰 모아서 보기 등 몇 가지 편의 기능을 지원합니다.

시작하기

  1. 파이썬을 설치합니다.

  2. cmd 창을 열어 다음과 같은 명령어를 칩니다.

    pip install -U WebtoonScraper
    

    또는

    pip3 install -U WebtoonScraper
    

웹툰 다운로드하기

  1. 원하는 웹툰으로 가서 titleid 또는 title_no를 복사하세요. img 국내의 경우 여기에서, img 해외의 경우는 여기에서, img 만화경의 경우는 여기에서 확인할 수 있습니다.

  2. 다음의 파이썬 코드를 웹툰이 다운로드되길 원하는 폴더 내에서 실행해 주세요. 웹툰은 정식 연재와 베스트 도전, Webtoons 오리지널과 캔버스 모두 가능합니다.

    from WebtoonScraper import Webtoon as wt
    
    # 네이버 웹툰
    wt.get_webtoon(76648, wt.N) # titleid를 여기에다 붙여넣으세요.
    # 베스트 도전만화
    wt.get_webtoon(763952, wt.B) # titleid를 여기에다 붙여넣으세요.
    # 해외 웹툰 오리지널
    wt.get_webtoon(1435, wt.O) # titleid를 여기에다 붙여넣으세요.
    # 해외 웹툰 캔버스
    wt.get_webtoon(304446, wt.C) # titleid를 여기에다 붙여넣으세요.
    # 만화경
    wt.get_webtoon(146, wt.M) # titleid를 여기에다 붙여넣으세요. Webtoon.T 태그도 사용 가능합니다.
    

    이제 웹툰이 webtoons 폴더에 다운로드됩니다.

    cf. 웹툰 태그를 생략하면 해당 웹툰이 어떤 사이트의 웹툰 id인지 자동으로 알아냅니다. 하지만 이 방식은 서로 다른 사이트에서 id가 겹치는 웹툰이 존재하면 오작동할 수 있으니 꼭 태그를 붙이는 것을 추천합니다.

    또 merge 태그를 이용하면

  3. 만화 뷰어 앱을 통해 다운로드한 웹툰을 시청할 수 있습니다.

주의사항

  • 중간에 웹툰 다운로드가 멈춘 듯이 보여도 정상입니다. 그대로 가만히 있으면 다운로드가 다시 진행됩니다.
  • 만약 작동하지 않는다면 윈도우에서 Python 3.11.3을 설치하고 앞의 과정을 반복해 보세요.

여러 회차 하나로 묶기

  1. 웹툰을 상기한 대로 다운로드받습니다.
  2. 다음과 같이 코드를 짭니다.
    from WebtoonScraper import *
    
    folder = WebtoonFolderManagement('webtoon_merge')
    folder.divide_all_webtoons(5)
    
  3. webtoons 폴더에 있는 모든 웹툰이 'webtoon_merge' 폴더에 5화씩 묶여져 다운로드됩니다.

주의사항

  • 시작 시 꼭 디렉토리를 선택해 주세요. 아니면 오류가 납니다.
  • 작업 중간에 폴더가 사라지고 이미지가 폴더 밖으로 나오는데, 이는 정상 과정입니다.
  • 너무 큰 숫자를 입력하면 웹툰 뷰어가 제대로 작동하지 않을 수 있음을 유의하세요.

묶인 회차 다시 원래대로 되돌리기

  1. 윗글의 기능으로 묶인 회차를 준비합니다.
  2. 다음과 같이 코드를 짭니다.
    from WebtoonScraper import *
    
    folder = WebtoonFolderManagement('webtoon_merge')
    folder.revert_to_original_state('webtoon/1초(725586)')
    
  3. 'webtoon/1초(725586)' 폴더에 있던 모든 웹툰이 웹툰을 처음 다운로드했던 상태로 되돌아갑니다.

QNA

회차가 띄엄띄엄 있거나 설정된 회차 번호가 작가가 설정한 회차 번호와 다릅니다./회차 묶기를 사용했는데 묶인 회차 수가 설정한 수보다 더 적습니다.

생기는 이유

이 프로젝트에서 웹툰의 회차 번호는 ID를 기준으로 합니다. 이는 작가가 정한 회차와는 다를 수 있습니다. 작가가 프롤로그부터 시작하는 경우(프로젝트의 회차 번호가 하나 빠름), 작가가 리메이크를 해서 전에 있던 작품을 제거해 ID가 연속적으로 있지 않는 경우(주로 베도에서 일어남/회차 번호가 띄엄띄엄하게 있음), 논란이나 작가 실수 등으로 회차가 삭제된 경우(한 회차를 건너띔) 등에서 ID가 불연속적이거나 작품과 일치하기 않는 경우가 생기게 됩니다.

ID를 회차 번호로 그대로 사용하는 이유

우선 작가가 설정한 회차 번호에 맞추는 것은 힘듭니다. 우선 번호가 어디에 있을지 알기 어렵고, 프롤로그가 있을지 없을지 알 수 없으며, 여러 화에 걸쳐 같은 에피소드를 진행하는 경우도 있고, 외전으로 본편의 회차에서 분리된 화를 운영하는 경우가 있어 화에 맞추어서 번호를 정하는 것을 어렵습니다. 1부터 시작해서 끝까지 일정한 번호를 유지하는 것도 고려해볼 만하나 만약 그렇게 된다면 무결성 체크를 사용하기 어렵게 됩니다. 따라서 작가가 설정한 회차를 그대로 사용하는 것도 어렵고, 만약 가능하다 할 지라도 무결성 체크를 포기하기 어렵기 때문에 현재는 ID를 회차 번호로 사용하고 있습니다.

전 버전과의 차이

0.1.0: 버프툰 추가, 빠진 부분 재추가

0.0.19.3: merge 속성 추가, get_webtoon 함수로 변경

0.0.19.1: pbar에 표시되는 내용 변경, 내부적 개선

0.0.18: 만화경 지원, 리팩토링됨(Scraper Abstract Base Class 추가)

0.0.17: 웹툰즈 오리지널, 캔버스 지원

0.0.12: 네이버 웹툰, 베스트 도전 지원

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

WebtoonScraper-0.1.0.tar.gz (280.7 kB view hashes)

Uploaded Source

Built Distribution

WebtoonScraper-0.1.0-py3-none-any.whl (26.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page