- Epublifier는 웹사이트의 HTML 페이지 목록을 추출해 ePub 책으로 컴파일하고, 사용자가 선택한 eReader로 가져갈 수 있게 하는 브라우저 확장 도구임
- JavaScript를 작성할 수 있는 고급 사용자는 파서 정의를 추가해 특정 사이트의 파싱 방식을 커스터마이즈할 수 있음
- 지원 대상은 Novel Update, Wuxia World, awesome-read-the-docs의 다수 사이트, UL/OL 목차·링크 텍스트 정규식·query selector 기반 커스텀 사이트, 제목 요소와 Next 버튼이 있는 커스텀 웹앱임
- 브라우저 안에서 실행되므로 JavaScript로 동적으로 텍스트를 생성하거나 가져오는 사이트에서도 페이지를 처리할 수 있고, 마우스 클릭으로 핵심 요소를 선택하는 UI 기반 스크래핑을 제공함
- 반복 실행되는 백그라운드 작업이나 견고한 전용 스크래퍼가 목적이 아니며, 이미 다른 프로그램이 잘 처리하는 사이트에서는 전용 설정이 있는 도구보다 더 나은 성능을 기대하기 어려움
Epublifier가 하는 일
- Epublifier는 웹사이트를 ePub으로 변환하는 도구임
- 웹사이트에서 HTML 페이지 목록을 추출하고, 이를 ePub 책으로 컴파일해 사용자가 원하는 eReader에 가져갈 수 있게 함
- JavaScript를 작성할 수 있는 사용자는 추가 파서 정의를 넣어 임의 사이트의 파싱을 커스터마이즈할 수 있음
- 사용법은 wiki에서 확인할 수 있음
지원하는 사이트와 페이지 구조
- 현재 지원 대상은 다음과 같음
-
Novel Update
-
Wuxia World
- awesome-read-the-docs에 포함된 다수 사이트
- UL/OL 요소를 목차로 쓰는 커스텀 사이트
- 링크 텍스트에 대한 정규식 또는 query selector를 사용하는 커스텀 사이트
- 미리 정의된 제목(header) 요소와 클릭 가능한 Next 버튼이 있는 커스텀 웹앱
-
설치
- Firefox 확장은 Firefox Add-ons에서 설치할 수 있음
- Chrome 확장은 Chrome Web Store에서 설치할 수 있음
사용 예시
- Novel Update에서 페이지 목록 추출 예시가 있음
- Wuxia World에서 Next 버튼을 따라가며 웹앱을 순회하는 예시가 있음
- FastAPI 문서 같은 다른 문서 사이트에서 문서 추출 예시가 있음
브라우저 확장으로 만든 이유
- 이 도구는 전통적인 요청 기반 CLI 스크립트나 열린 탭·창을 기준으로 긁는 일부 Chrome 확장으로 잘 스크래핑되지 않는 웹사이트에서 임시 ePub 생성을 하기 위한 용도임
- 기존 CLI 스크래퍼나 다른 확장은 대개 미리 정의된 사이트에 맞춰져 있고, 그 범위를 벗어나는 사이트에는 맞지 않을 수 있음
- 일부 도구는 적지 않은 설정이나 코드 작성이 필요함
- 일부 사이트는 JavaScript로 텍스트를 동적으로 생성하거나 가져오기 때문에, 브라우저가 JavaScript를 실행해야 함
- 이 점이 Epublifier를 만든 가장 큰 간극이었음
- 브라우저 안에서 실행되므로 탐지되거나 차단될 가능성이 낮을 수도 있음
의도한 사용 방식과 한계
- Epublifier는 견고한 스크래퍼나 반복 실행되는 백그라운드 예약 작업으로 쓰기 위한 도구가 아님
- 스크래핑할 핵심 요소를 UI에서 선택하도록 만든 이유도 이 사용 방식과 맞닿아 있음
- 사이트별 설정이 없어도 비교적 쉽게, 몇 번의 마우스 클릭만으로 긁어올 수 있도록 범용성을 목표로 함
- 이미 다른 프로그램이나 확장이 잘 처리하는 사이트라면, 그 도구들은 해당 사이트에 맞게 설정되어 있으므로 Epublifier가 더 잘 동작하지는 않음
- 코딩이나 설정에 많은 시간을 쓰지 않고 어떤 사이트를 한두 번 스크래핑하려는 경우에 맞춰져 있음
빌드
- 빌드 환경은 Windows 10과 NPM 8.1.2임
- 빌드 절차는 다음과 같음
- NPM 설치
- 기본 디렉터리에서
npm install실행 - Firefox용으로
npm run build_ff실행 - Chrome용으로
npm run build실행
사용한 구성 요소
- ePub 생성에는 jEpub이 사용됨