起點等都推薦用這個腳本【小說】下載腳本,遇到沒人願意適配的小站再考慮我的腳本。
勿用于版權站,如造成侵權或對象站點損失,後果自負。
輕量級抓取腳本,用於下載網頁小説或其他文字內容,理論上通用於任何靜態寫入正文的小說網站、論壇、貼吧等而無需規則。
腳本會自動檢索頁面中的主要內容並下載(省得複製完gal攻略還要手動逐條刪除「某某某13級頭銜水龍王發表於X年X月X日來自XX客戶端」)。
如果位於小說目錄頁會遍歷所有章節並排序拼接後存為TXT文檔。
![chapters](https://s3.bmp.ovh/imgs/2024/01/30/5b8c0af21035c3d9.jpg)
【高亮或者格式化網頁中選中的代碼,並統計字數】
操作說明
- 打開小說目錄頁、論壇或貼吧內容頁
- 按下
CTRL + F9
或點擊命令菜單
- 按下
SHIFT + CTRL + F9
忽略目錄,僅下載當前頁
- 如遇目錄頁分頁,可用東方永頁機翻完所有目錄后再行下載
提交issue至Github(☑️已適配站點規則在下面【簡易自定義例子】處,自行複製取用)
亦可加入Discord群組尋求幫助。
怠惰小説下載器 ZIP 擴充 下載時分章節保存 TXT 並打包為 ZIP
❤️恰好對你有幫助的話,可透過PayPal.Me 或 Ko-fi请我喝一杯奶茶
![donation](https://s2.loli.net/2023/02/06/afTMxeASm48z5vE.jpg)
透過下載的 md 文件生成 epub 格式 或者 mobi 格式
- 下載 Calibre 並安裝。本文以 3.22.1 Windows 版為例。
- 在主界麵點擊“偏好選項”。如果默認沒有顯示,請將窗口最大化或點擊工具欄最右側的雙箭頭展開
- 點擊 “格式轉換” - “常用選項”。
- 點擊 “內容目錄”,在 “Xpath 表達式” 選項框中依次輸入 //h:h1 //h:h2 //h:h3 並 “應用”
- 回到主界面,點擊 “添加書籍”,選擇需要轉換的 md 文件,導入。
- 點擊 “轉換書籍”,確認輸出格式為 “EPUB” 或者 “MOBI”,點擊確定開始轉換。
怠惰心法
此功共有七層,以第一層最易,第七層最難。
第一層心法(極易)
CTRL+F9 就完事了唄。
第二層心法(超易)
倘若章節鏈接沒有xx章、xx節、xx話之類的特徵字樣,可點擊腳本管理器命令菜單裡的自定義下載,輸入其中隨便一個章節名包含的字眼。
例如 “第1頁”,即可標記所有同級鏈接為目錄章節並下載。
假如頁面有兩套章節格式,也可標記多個,例如“眾神的風車,風車的眾神”。
亦可標記排除項,例如“眾神的風車01!02!03,風車的眾神!鐵幕”,代表標記“眾神的風車01”同級鏈接並排除含有 02 的項和含有 03 的項,同時標記“風車的眾神”同級鏈接並排除含有“鐵幕”的項。
第三層心法(略易)
如果內頁沒有正文,但章節鏈接與真實內容鏈接有關聯,可通過自定義下載,替換鏈接內容獲取真實內容。
例如 【眾神的風車@@articles@@articlescontent
】,即可替換章節 URL 中的 articles 為 articlescontent 並自動獲取內容。
第四層心法(略難)
如果鏈接無法由直接替換得到最終地址,可用正則替換。
例如【眾神的風車@@articles(\d+)@@articlescontent_$1b
】,即可替換章節 URL 中的 articles1、articles2 為
articlescontent_1b、articlescontent_2b
第五層心法(難)
輸入章節的 css 選擇器可以更精確地標記章節鏈接。
例如.l_chaptname>a
,代表 class 為 l_chaptname 的元素下的 a 鏈接。
可使用>>
管道來處理抓取到的item。
下載內容可能含有乾擾碼,此時只需點擊懶人小說下載設置,輸入乾擾碼的 css 選擇器即可排除乾擾碼。
例如 .mask,.ksam,font.jammer
,代表刪除 class 為 mask 或者 ksam 的元素或者 class 為 jammer 的 font 元素。
第六層心法(超難)
倘若正文不在內頁正文,是頁面加載後處理得到的,可點擊自定義下載,輸入自定義代碼對內頁進行分析獲取正確結果。
例如 【眾神的風車@@@@@@var noval=JSON.parse(data.querySelector("#meta-preload-data").content).novel;noval[Object.keys(noval)[0]].content;
】,即可通過自定義代碼處理返回頁面獲取內容。
代碼中使用 data 可以獲得返回頁面的 document,最後一個表達式的值為最終寫入的內容。
如果返回 false,代表異步回調,可自行抓取內容並等待抓取成功後用 cb(content) 返回抓取到的 content。
倘若章節沒有鏈接,點擊後方才生成鏈接跳轉,可通過 >>
管道處理抓取到的元素生成章節鏈接,詳情見下方例子。
第七層心法(24K純難)
倘若正文已經經過加密,需要解密才能獲取正確內容,可打開瀏覽器的控制台,自定義 dacProcess 函數,調取頁面中網站自身的解密代碼處理抓取的加密數據。
例如控制台輸入dacProcess=data=>{return decrypt(xxx);}
代表調用網站的 decrypt 解密章節頁面返回的數據。然後再點擊自定義下載,需要注意自定義下載時標記章節是必需的。
完整格式說明
某個章節名/CSS選擇器【選擇器後可跟>>傳入item添加處理代碼】 @@ 抓取到鏈接的正則匹配 @@ 對應匹配生成替換URL @@ 根據爬取返回內容data處理並返回最終文本
簡易自定義例子
僅作為示例,如果網站改版導致失效,可自行摸索修改
- po18,章節的選擇器為 .l_chaptname>a ,輸入並下載後發現通過 url 無法下載正文內容,正文是 ajax 通過 articlescontent 下載的。此時可後接 @@articles@@articlescontent (@@ 分隔) 將章節 url 中的 articles 替換為 articlescontent 。粘貼進命令菜單即可下載。其中第一個 articles 可使用正則,例如 @@articles(\d+)@@$1content 代表將鏈接中的「articles1」「articles2」等替換為「1content」「2content」。
.l_chaptname>a@@articles@@articlescontent
如果需要下載已購買的VIP章節,用這個規則
a.btn_L_blue>>let a=document.createElement("a");a.innerText=item.parentNode.parentNode.querySelector('.l_chaptname').innerText;a.href=item.href;return a;@@articles@@articlescontent
- pixiv,p站小說的章節選擇器為main>section ul>li>div>a,無需替換鏈接,因此後兩項留空。有6個@了 😂。正文在meta裡,需要自定義代碼提取meta-preload數據的content項。其中 "data" 代表抓取網頁的document對象,若返回的是純文本,則用 data.body.innerText 獲取。
main>section ul>li>div>a@@@@@@var noval=JSON.parse(data.querySelector("#meta-preload-data").content).novel;noval[Object.keys(noval)[0]].content;
- 其他規則前往 Github 查看
測試網頁
FAQ
- 章節沒有「第幾章第幾節」的字樣怎麼辦?
參考第二層心法輸入其中一個章節名即可
- 下載一定數量章節後抓取超時失敗怎麼辦?
可能是網站限制了並發數,在設定中調低執行緒數即可。 設為正數代表執行緒數,負數則代表單緒數且間隔x秒下載一章,例如-2
代表每隔2秒下載一章
- 按下快捷鍵沒有反應怎麼辦?
可能是快捷鍵被其他應用程式接管了,使用腳本管理器中的命令選單下載即可
- 有無關幹擾字元怎麼辦?
設定裡輸入乾擾碼css選擇器即可,多個選擇器以逗號分隔
- 章節順序不對怎麼辦?
預設是按網頁內出現位置排序。 點擊設置,嘗試更改為“按網址重新排序”或“按章節名重新排序”即可
- 章節標題有誤怎麼辦?
預設是取章節連結文字為標題,可以在設定中自訂章節標題,輸入 title 即為抓取分頁頁面的標題,輸入 h1 即為抓取分頁頁面 h1 等級的文章標題
- 抓取失敗是因為?
NETWORK ERROR 説明網路錯誤,可能是當前本機網路故障,也可能是被目標網站封鎖了 IP。 TIMEOUT 説明訪問超時,可能是因爲當前網路速率過慢或目標網站流量超限
- 其他問題歡迎透過 email 聯絡我,有空可幫你解決。
為啥要寫這個腳本?
主要是
因為我要下載馳星周的漂流街,卻發現前人的輪子「【小說】下載腳本」不能用,又不想為這破站 🙃 寫規則,而且我就是看不上霸道總裁修仙穿越你咬我啊指不定它三天兩頭改個版呢。寫個通用規則的腳本,一來可以不用追著數不清的小說站適配修改更新,二來也免去了法律風險。
這個腳本會自動去查找主要內容並下載,不需要寫規則。當然如果你家網站廣告內容比正文還多我也沒辦法。
遇到特殊網站還是建議用「【小說】下載腳本」。