웹소설 텍본 만드는 법 프로그램 만들기(노벨피아, 문피아)

회사를 그만둔 뒤 끔찍한 유혹을 이기지 못하고
노벨피아와 문피아 웹소설에 중독되었다.
슬프게도 엄청난 시간을 꼴아박았다.
대충 6천편정도 본것같다.

하지만 웹소설은 생각보다 조금 큰 단점이 있다.

그것은 바로.
'검색이 안된다'는 것이다.

소설을 보다보면 인상적인 구절이나 화가 존재하기 마련이고
이를 다시 보기 위해서는 일반적으로 해당 장면을 연상할 수 있는 키워드로 서치하게 되는데

노벨피아나 문피아에서는 이 작업이 불가능하다.
그래서 나는

작가의 작품을 '공짜로 보기위해' 텍본을 만드는 것이 아닌 '편하게 보기위해' 개인적으로 만드는 텍본 생성기는 괜찮지 않을까 하는 생각에

텍본 생성기를 만들게 되었다.

어떻게 만드는가

방법은 간단하다.

  1. 해당 소설의 url을 입력받는다.
  2. 해당 소설의 모든 화 url을 받는다.
  3. 해당 소설의 모든 화 url에서 텍스트를 추출한다.
  4. 이를 텍스트로 export한다.

크롤링에는 가장 완벽한 자바스크립트 라이브러리인 puppeteer를 사용하도록 한다.
소스코드는 아래와 같다.

Pasted image 20260825151732

getUrl은 puppeteer를 이용하여 1화부터 최종화까지 url을 가져와 배열로 return 하는 함수이고
getText는 puppeteer를 이용하여 텍스트를 추출하고, 텍스트로 return 하는 함수이다.

단, 매번 로그인 하는것은 귀찮으니까
puppeteer의 userDataDir 옵션을 활성화하여 브라우저가 종료되어도 로그인 정보가 그대로 남도록 한다.
또한 headless:true로 하여 백그라운드에서 puppeteer가 실행되도록 했을때,
아마도 노벨피아의 자체적인 크롤링 방지 시스템에 의해 403 error가 리턴된다.

이를 막기위해 UserAgent를 변경해주어야만 한다.
결과적으로

Pasted image 20260825151806

이렇게 텍본이 잘 완성되었다.

대충 하루정도 걸렸는데
이렇게 빨리 할 수 있었던 이유는
노벨피아가 텍스트를 걍 html DOM에 뿌려놓았기 때문이다.

문피아는?
문피아는 조금 더 복잡하다.
문피아는 텍스트가 전용 뷰어(canvas기반)에 펼쳐지기 때문에
단순 파싱으로는 텍스트를 수집할 수 없다.

하지만 방법은 '있다'

Pasted image 20260825151906

문피아에서 각 소설 url에 접속하여

  1. 캔버스뷰가 다 그려질때까지 기다린다.
  2. 전체화면 보기를 누른다.
  3. 이상태에서 스크린샷을 찍는다.
  4. 오른쪽 끝에 페이지가 꽉 찰때까지 반복한다.

Pasted image 20260825151944

  1. 이런식으로 각 페이지가 저장된다.
  2. Cloud Vision API를 이용하여 저 이미지에서 텍스트를 추출한다.
    Pasted image 20260825152012
  3. 이미지를 싹다 스캔하면 이런식으로 text가 export된다.
    img
  4. 구글 클라우드 api 콘솔을 보면 사용량이 증가한것을 확인할 수 있다.

댓글

첫 번째 댓글을 남겨보세요.