在chrome浏览器上下载txt小说的Javascript代码
生活随笔
收集整理的這篇文章主要介紹了
在chrome浏览器上下载txt小说的Javascript代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在chrome瀏覽器上下載txt小說的Javascript代碼
前段時間在追一部網絡小說,想把小說下載到本地離線閱讀,利用chrome瀏覽器開發模式,編寫了一段下載小說頁面中所有章節內容,并合并為一個文本文件的Javascript代碼。
//章節目錄所在的標簽ID var txtListID = "list"; //小說章節正文所在的標簽ID var txtContentID = "content";function syncSleep(time) {return new Promise((resolve)=>setTimeout(resolve, time)); }//網頁鏈接文檔列表 var docLst = [];//XmlHttpReauest var XMLHttp = {_getInstance: function() {return this._createObj();},_createObj: function() {if (window.XMLHttpRequest) {// code for IE7, Firefox, Opera, etc.objXMLHttp = new XMLHttpRequest();} else if (window.ActiveXObject) {// code for IE6, IE5objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");}return objXMLHttp;},// 發送請求(方法[post,get], 地址, 數據, 回調函數) sendReq: function(method, url, data, callback) {var objXMLHttp = this._getInstance();with (objXMLHttp) {try {// 加隨機數防止緩存 if (url.indexOf("?") > 0) {url += "&randnum=" + Math.random();} else {url += "?randnum=" + Math.random();}open(method, url, true);// 設定請求編碼方式 setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');send(data);onreadystatechange = function() {if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)) {callback(objXMLHttp);}}} catch (e) {alert(e);}}} }//Xml文檔Parser function Parser() {if (window.DOMParser) {return new DOMParser();} else // Internet Explorer{xmlDoc = new ActiveXObject("Microsoft.XMLDOM");xmlDoc.async = "false";return xmlDoc;} }var promises = []; //下一行代碼是關鍵,用于生成小說頁面上所有章節鏈接網頁列表。這需要根據不同小說網站的章節目錄頁面布局,選擇不同的ID或者CLASS。 var srcDoc = document.getElementById(txtListID).children[0];var ad = Array.prototype.slice.call(srcDoc.children); var txtListCount = 0; ad.forEach(function(item, idx) {var tmpd = item.children[0];if (tmpd != undefined) {if (tmpd.nodeName === "A") {promises.push(new Promise(resolve=>{XMLHttp.sendReq("GET", tmpd.href, null, function(xhttp) {var parser = Parser();var doc = parser.parseFromString(xhttp.responseText, "text/html");var ct = doc.getElementById(txtContentID).innerHTML;docLst.push({"idx": idx,"url": tmpd.href,"section": tmpd.innerText,"txt": ct});console.log(idx, tmpd.innerText, tmpd.href);resolve();});}));}} })function SaveToFile(data, filename) {if (!data) {console.error('Console.save: No data')return;}if (!filename)filename = 'console.json';if (typeof data === "object") {data = JSON.stringify(data, undefined, 4)}var blob = new Blob([data],{type: 'text/json'});e = document.createEvent("MouseEvents");a = document.createElement("a");a.download = filename;a.href = window.URL.createObjectURL(blob);a.dataset.downloadurl = ["text/json", a.download, a.href].join(':');e.initMouseEvent("click", true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);a.dispatchEvent(e);window.URL.revokeObjectURL(a.href); }//小說的書名 var txtTitle=document.getElementById("info").innerText var txtUrl=document.URLvar docStr = "\n"+txtTitle+"\n"+txtUrl+"\n"; Promise.all(promises).then(function() {docLst.sort((a,b)=>{return a.idx - b.idx});docLst.forEach(function(item) {docStr = docStr + "\n第"+item.section +"\n"+ item.txt+"\n"});[{in: "<br>",to: " "}, {in: " ",to: " "},{in:"XX小說網",to:"\n"}].forEach(item=>{var rg = new RegExp(item.in,"g");docStr = docStr.replace(rg, item.to);})//console.log(docStr);SaveToFile(docStr,"docStr.txt"); });上述代碼需要在chrome開發模式下,新建snippet代碼片段,復制粘貼到代碼片段中運行。由說小說網站頁面布局存在差異,需要針對性的分析頁面布局,生成正確的章節網址列表。由于個人水平限制,代碼中有不足或錯漏之處,還請方家指正。
總結
以上是生活随笔為你收集整理的在chrome浏览器上下载txt小说的Javascript代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 主梁弹性模量计算_简支梁计算方法
- 下一篇: UEditor定制工具栏图标