Epublifier - alat scraping halaman (buku, manual) untuk membaca offline
(github.com/maoserr)- Epublifier adalah ekstensi browser yang mengekstrak daftar halaman HTML dari situs web, mengompilasinya menjadi buku ePub, lalu memungkinkan pengguna membawanya ke eReader pilihan mereka
- Pengguna tingkat lanjut yang dapat menulis JavaScript bisa menambahkan definisi parser untuk menyesuaikan cara parsing situs tertentu
- Yang didukung mencakup Novel Update, Wuxia World, banyak situs dari awesome-read-the-docs, situs kustom berbasis daftar isi UL/OL·regex teks tautan·query selector, serta web app kustom yang memiliki elemen judul dan tombol Next
- Karena berjalan di dalam browser, alat ini dapat memproses halaman bahkan pada situs yang menghasilkan atau mengambil teks secara dinamis dengan JavaScript, dan menyediakan scraping berbasis UI untuk memilih elemen inti dengan klik mouse
- Alat ini tidak ditujukan untuk pekerjaan latar belakang yang berjalan berulang atau scraper khusus yang sangat tangguh, dan pada situs yang sudah ditangani dengan baik oleh program lain, sulit mengharapkan kinerja yang lebih baik daripada alat dengan konfigurasi khusus
Apa yang dilakukan Epublifier
- Epublifier adalah alat untuk mengubah situs web menjadi ePub
- Alat ini mengekstrak daftar halaman HTML dari situs web, mengompilasinya menjadi buku ePub, lalu memungkinkan pengguna membawanya ke eReader yang diinginkan
- Pengguna yang bisa menulis JavaScript dapat menambahkan definisi parser tambahan untuk menyesuaikan parsing situs mana pun
- Cara penggunaan dapat dilihat di wiki
Situs dan struktur halaman yang didukung
- Saat ini yang didukung adalah sebagai berikut
-
Novel Update
-
Wuxia World
- Banyak situs yang termasuk dalam awesome-read-the-docs
- Situs kustom yang menggunakan elemen UL/OL sebagai daftar isi
- Situs kustom yang menggunakan regex pada teks tautan atau query selector
- Web app kustom dengan elemen judul (header) yang telah ditentukan dan tombol Next yang bisa diklik
-
Instalasi
- Ekstensi Firefox dapat dipasang dari Firefox Add-ons
- Ekstensi Chrome dapat dipasang dari Chrome Web Store
Contoh penggunaan
- Ada contoh ekstraksi daftar halaman di Novel Update
- Ada contoh menelusuri web app dengan mengikuti tombol Next di Wuxia World
- Ada contoh ekstraksi dokumentasi di situs dokumentasi lain seperti dokumentasi FastAPI
Alasan dibuat sebagai ekstensi browser
- Alat ini ditujukan untuk membuat ePub sementara dari situs web yang tidak mudah di-scrape dengan skrip CLI tradisional berbasis request atau beberapa ekstensi Chrome yang mengambil data berdasarkan tab atau jendela yang terbuka
- Scraper CLI yang sudah ada atau ekstensi lain umumnya disesuaikan untuk situs yang telah ditentukan sebelumnya, dan mungkin tidak cocok untuk situs di luar cakupan itu
- Beberapa alat memerlukan konfigurasi yang tidak sedikit atau penulisan kode
- Sebagian situs menghasilkan atau mengambil teks secara dinamis dengan JavaScript, sehingga browser harus menjalankan JavaScript
- Inilah celah terbesar yang melatarbelakangi pembuatan Epublifier
- Karena berjalan di dalam browser, kemungkinan terdeteksi atau diblokir mungkin lebih rendah
Cara pakai yang dimaksudkan dan keterbatasannya
- Epublifier bukan alat yang ditujukan untuk digunakan sebagai scraper yang tangguh atau pekerjaan terjadwal di latar belakang yang berjalan berulang
- Alasan elemen inti untuk scraping dipilih lewat UI juga sejalan dengan pola penggunaan ini
- Tujuannya adalah fleksibilitas, agar dapat melakukan scraping dengan relatif mudah meski tanpa konfigurasi khusus per situs, hanya dengan beberapa klik mouse
- Jika suatu situs sudah ditangani dengan baik oleh program atau ekstensi lain, alat-alat tersebut sudah dikonfigurasi untuk situs itu sehingga Epublifier tidak akan bekerja lebih baik
- Alat ini cocok untuk kasus saat Anda ingin melakukan scraping satu atau dua kali pada suatu situs tanpa menghabiskan banyak waktu untuk coding atau konfigurasi
Build
- Lingkungan build adalah Windows 10 dan NPM 8.1.2
- Prosedur build adalah sebagai berikut
- Instal NPM
- Jalankan
npm installdi direktori utama - Untuk Firefox, jalankan
npm run build_ff - Untuk Chrome, jalankan
npm run build
Komponen yang digunakan
- jEpub digunakan untuk membuat ePub
1 komentar
Komentar Hacker News
Yang membuat ekstensi ini berbeda dari scraper lain adalah karena ini alat untuk membuat EPUB sementara dari situs yang sulit di-scrape dengan scraper tradisional
Biasanya scraper command-line atau ekstensi lain sudah punya daftar situs yang didukung, atau membutuhkan cukup banyak konfigurasi/kode
Selain itu, sebagian situs membuat atau mengambil isi secara dinamis dengan JavaScript, sehingga browser harus menjalankan JavaScript secara langsung; ini adalah celah terbesarnya
Karena berjalan di dalam browser, kemungkinan terdeteksi atau diblokir juga bisa lebih rendah
Tujuannya bukan untuk dipakai secara tangguh seperti tugas terjadwal di background yang berjalan berulang, dan karena itu ada UI untuk memilih elemen inti yang akan diambil
Ini alat untuk mengurangi waktu yang dihabiskan mengambil konten satu-dua kali dengan beberapa klik mouse tanpa konfigurasi khusus per situs; kalau situs itu sudah ditangani dengan baik oleh program/ekstensi lain, kemungkinan opsi itu lebih baik
Saya membuatnya karena saya bukan tipe yang lama bertahan di situs yang sama
Dari sudut pandang orang yang pernah membuat hal serupa sendiri, bagian menarik dari alat ini adalah UI untuk menyesuaikan ekstraksi konten secara berulang di situs sembarang
Fakta bahwa seluruh proses ekstraksi bisa ditangani lewat GUI membuatnya jauh lebih fleksibel daripada cara umum
Akan sangat keren kalau ini bisa menangani situs yang semua bagiannya berada di balik UI akordeon yang harus dibuka agar terlihat, dan ketika satu bagian dibuka bagian lain tertutup
Saat ini saya juga sedang membuat sesuatu yang sangat mirip
Saya membuat web scraper dan parser EPUB untuk blog dan terutama web novel, lalu menyimpan datanya ke database bersama kategori dan tag
Saya juga membuat PWA untuk membaca offline yang melacak progres baca beberapa karya dan memungkinkan menyimpan beberapa versi dari cerita yang sama (web novel dan EPUB terbitan)
Calibre mendukung sangat banyak situs
https://github.com/JimmXinu/FanFicFare
https://github.com/JimmXinu/FanFicFare/wiki/SupportedSites
Dulu saya membuat Kindle-send[0] yang serupa untuk mengirim blog ke Kindle, dan secara internal memakai readability
Sekarang saya menggunakannya untuk mengirim blog, buku, dan kadang arsip seluruh situs web, serta bisa dipakai dari skrip
Karena highlight Kindle bisa diekspor ke Obsidian, membuat EPUB seperti ini punya keuntungan bahwa highlight bisa dikumpulkan di satu tempat
Namanya kindle-send, tetapi bisa mengirim ke e-reader mana pun yang memakai email sebagai cara pengiriman buku
[0] https://github.com/nikhil1raghav/kindle-send
Saya pernah membuat hal serupa untuk terminal Unix, ditujukan untuk halaman web, Gopher, dan Gemini: Offpunk
https://sr.ht/~lioploum/offpunk/
Alih-alih EPUB, Gopher disimpan di cache sebagai file teks, Gemini sebagai file Gemini, dan halaman web sebagai HTML+gambar
Anda bisa melihat struktur hierarkisnya di
~/.cache/offpunkatau langsung mengunjunginya dari OffpunkDengan fitur
tour, alih-alih doomscrolling, Anda membaca semua tulisan secara berurutan sampai selesai dalam mode teksAda beberapa alat yang mirip dengan Epublifier
https://epub.press/
https://github.com/dteviot/WebToEpub
https://dotepub.com/
Rapi
Dulu saya membuat versi sederhana dari konsep ini, menyimpan file EPUB di sistem file server, lalu menyinkronkannya dengan e-reader saya
https://github.com/solarkraft/webpub
Bahan intinya adalah Postlight Parser, yang mengubah situs web menjadi tampilan “dokumen” yang disederhanakan
Apakah http://fanfiction.net/ juga didukung? Saya belum menemukan solusi yang mudah untuk situs ini
Cukup berfungsi sampai taraf tertentu, tetapi sebagian cerita berjalan baik sementara sebagian lain hanya mengambil halaman pertama
Untuk mengambil kontennya, saya belum melihat pendekatan yang berjalan baik selain memakai browser headless