| 查看: 2121 | 回复: 12 | ||||
| 当前主题已经存档。 | ||||
neweroica木虫 (著名写手)
|
[交流]
[原创] NetLibrary电子书批量下载秘诀 (请求加精)
|
|||
|
原文地址见我的博客: http://blog.csdn.net/neweroica/archive/2006/08/04/1016345.aspx NetLibrary电子书批量下载秘诀 2006-8-3 学校早就买了NetLibrary,上面提供了许多很棒的英文原版书,可惜只能在浏览器中一页一页地看。虽然可以使用“保存”按钮一页一页地保存成pdf文件,但想要保存一本完整的数百页的书,可得有足够耐心啊。先在网上搜了一下,结果发现似乎还没有牛人公布批量下载NetLibrary电子书的方法。正好今天得闲,便开始琢磨着如何批量下载NetLibrary的电子书。经过一个下午和网上的努力,终于初步开发出一个比较省力省心的办法来。现拿出与大家共享,不过由此引发的版权问题,本人概不负责。 首先,登上NetLibrary,打开你要的电子书链接(“View this eBook”)。 打开的窗口如下图所示: 我们可以查看一下页面范围,点击页面左边导航栏和右上角的“Next >>”按钮,找到全书最后一页,如图所示: 如本例,最后一页是递471页。 注意,这个IE浏览器在后面的步骤中不要关闭! 第二步,删掉IE的临时文件夹(C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5)中所有的pdf文件。 一种方便的方法是,进入DOS窗口,输入: cd C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5 然后输入命令: for /r . %a in (*.pdf) do del "%a" 第三步,利用网页脚本自动加载每页。 具体方法是: 将下面的代码保存成netlib.htm网页文件: //书号代码 var bookid = 105483; //起止页码 var istart = 1; var iend = 471; //延迟时间(秒) var wtime = 5; var ipage = istart; function getpage(){ loader.location = 'http://www.netlibrary.com/nlreader/nlReader.dll?BookID=' + bookid + '&FileName=Page_' + ipage + '.pdf'; if(ipage setTimeout('getpage()', wtime*1000); } ipage = ipage + 1; } getpage(); 其中的bookid是这本书的代号,可以从IE浏览器页面右上方的frame中点右键“查看源文件”,通过查找“bookid”字段找到这个代号;istart和iend是要下载的起止页码,这里是从第1页到第471页;wtime是自己估计的加载每个页面所需的最长时间,可以根据你的网速估计一下,我这里选择的是5秒钟。 然后双击运行,直到所有页面加载完毕。如下图所示: 第四步,将已经下载完全的每页的pdf文件从IE临时文件夹中按顺序取出。 这个工作其实最麻烦,因为IE临时文件夹中的临时文件是保存在许许多多随机命名的子文件夹之中的(不信请用资源浏览器进入“C:\Documents and Settings\Administrator\Local Settings\Temporary Internet Files\Content.IE5”看看)。而且你会发现刚才加载的那些临时的pdf文件的顺序是乱的,比如第1、4、5页在O1ORGB43子目录下,第2、3、7页在6PDQB2XW子目录下,而第6、8、9页则在W9CN0Z0N子目录下。所以,如果手工将这些pdf文件从IE临时文件夹中取出,将非常麻烦,而且取出后还要按照原书的页码顺序重命名,更是难上加难。为此,我还是用JavaScript编写了一个HTA程序,用来自动完成这些工作。我的思路很简单,就是用程序找出IE临时文件夹中所有的pdf文件,然后按照文件生成时间顺序排序,再将它们复制到硬盘的单独目录(如“C:\”)下,复制后的文件名就是这一页页码的名字。 具体方法是: 将下面代码保存成getpdf.hta文件: function ShowFolderList(folderspec) { var fso, f, fc, s; fso = new ActiveXObject("Scripting.FileSystemObject" ;f = fso.GetFolder(folderspec); fc = new Enumerator(f.SubFolders); s = ""; for (; !fc.atEnd(); fc.moveNext()) { s += fc.item(); s += "\n"; } return(s); } function ShowFolderFileList(folderspec, filespec) { var fso, f, f1, fc, s; fso = new ActiveXObject("Scripting.FileSystemObject" ;f = fso.GetFolder(folderspec); fc = new Enumerator(f.files); s = ""; for (; !fc.atEnd(); fc.moveNext()) { var st = fc.item() + ""; var fname = st.split('.'); var fileext = fname[fname.length-1]; if( (filespec != '*' && filespec != fileext) || st.length == 0){ continue; } //document.write('_'+st+'_ ') s += fc.item(); s += "\n"; } return(s); } function ShowSubFolderFileList(folderspec, filespec) { var s, i; var folders = ShowFolderList(folderspec).split('\n'); s = ""; for (i=0; i { if( folders.length == 0){ continue; } s += ShowFolderFileList(folders, filespec); } return(s); } function GetFileList(folderspec, filespec) { var s = ShowSubFolderFileList(folderspec, filespec); var fa = s.split('\n'); fa.length = fa.length - 1; return fa; } function GetFileTime(filespec) { var fso, f, d, t; fso = new ActiveXObject("Scripting.FileSystemObject" ;f = fso.GetFile(filespec); d=new Date(f.DateCreated); return d.getTime(); } function QuickSort(arr) { if (arguments.length>1) { var low = arguments[1]; var high = arguments[2]; } else{ var low = 0; var high = arr.length-1; } if(low // function Partition var i = low; var j = high; var pivot = arr; while(i while(i=pivot) j--; if(i arr[i++] = arr[j]; } while(i i++; if(i arr[j--] = arr; } }//endwhile arr = pivot; // end function var pivotpos = i; //Partition(arr,low,high); QuickSort(arr, low, pivotpos-1); QuickSort(arr, pivotpos+1, high); } else{ return; } return arr; } var fa = new Array(); var ft = new Array(); var sft = new Array(); fa = GetFileList('C:\\Documents and Settings\\Administrator\\Local Settings\\Temporary Internet Files\\Content.IE5', 'pdf'); s =""; for (i=0; i s += GetFileTime(fa)+' '; ft = GetFileTime(fa); sft = ft; } sft = QuickSort(sft); var ia = new Array(); for(i=0;i for(j=0;j if(sft == ft[j]){ ia = j; break; } } } var fso, f; fso = new ActiveXObject("Scripting.FileSystemObject" ;for (i=0; i f = fso.GetFile(fa[ia]); if(i+1 f.Copy("C:\\00" + (i+1) + ".pdf" ;document.write('00' + (i+1) + '.pdf '); } else if(i+1 f.Copy("C:\\0" + (i+1) + ".pdf" ;document.write('0' + (i+1) + '.pdf '); } else{ f.Copy("C:\\" + (i+1) + ".pdf" ;document.write((i+1) + '.pdf '); } } 双击运行之后,就会在C:\下看到复制出来的按照页码命名的一系列pdf文件。用Adobe Acrobat就可以将它们合并成一个完整的pdf文件。在整理时要注意检查有没有漏页或重页。弄完后删除掉C:\复制出来的单页文件。 最后,NetLibrary的电子书还有Cover和用小写罗马数字命名的页面(即封面和目录、前言、致谢、凡例等页),对于这些页面,一般不多,可以用手工下载。具体方法是: 在IE浏览器的NetLibrary在线阅读器中进入第一页封面页。然后重复前述第二步操作。 点击在线阅读器右上方的“Next >>”按钮,一页一页地手工加载。 然后重复前述第四步操作。 用Adobe Acrobat将这些页面与前面已合并的正文页整合成完整的一本电子书。在整理时要注意检查有没有漏页或重页。 [ Last edited by neweroica on 2006-10-12 at 11:50 ] |
» 收录本帖的淘帖专辑推荐
文献资源 |
» 猜你喜欢
孩子确诊有中度注意力缺陷
已经有12人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
2026博士申请-功能高分子,水凝胶方向
已经有6人回复
论文投稿,期刊推荐
已经有4人回复
硕士和导师闹得不愉快
已经有13人回复
请问2026国家基金面上项目会启动申2停1吗
已经有5人回复
同一篇文章,用不同账号投稿对编辑决定是否送审有没有影响?
已经有3人回复

2楼2006-10-01 02:50:23
wguoyong
金虫 (著名写手)
- 应助: 9 (幼儿园)
- 金币: 1343.8
- 散金: 3404
- 红花: 7
- 帖子: 1065
- 在线: 360.9小时
- 虫号: 60328
- 注册: 2005-03-05
- 专业: 胶体与界面化学

3楼2006-10-01 20:32:50
4楼2006-10-02 06:59:34
5楼2006-10-02 09:27:06
6楼2006-10-03 01:07:19
neweroica
木虫 (著名写手)
- 应助: 53 (初中生)
- 金币: 4992.5
- 散金: 301
- 红花: 31
- 帖子: 2470
- 在线: 216.6小时
- 虫号: 36775
- 注册: 2004-02-11
- 专业: 理论和计算化学
补充
|
使用下面的函数可以下载页码为罗马数字的书页: function getromanpage(){ var roman = new Array('Cover','i','ii','iii','iv','v','vi','vii','viii','ix','x','xi','xii','xiii','xiv','xv','xvi','xvii','xviii','xix','xx', 'xxi','xxii','xxiii','xxiv','xxv','xxvi','xxvii','xxviii','xxix','xxx', 'xxxi','xxxii','xxxiii','xxxiv','xxxv','xxxvi','xxxvii','xxxviii','xxxix','xl', 'xli','xlii','xliii'); if( ipage == 0 ){ //Cover loader.location = 'http://www.netlibrary.com/nlreader/nlReader.dll?BookID=' + bookid + '&FileName=' + roman[ipage] + '.pdf'; } else{ loader.location = 'http://www.netlibrary.com/nlreader/nlReader.dll?BookID=' + bookid + '&FileName=Page_' + roman[ipage] + '.pdf'; } if(ipage < iend){ setTimeout('getromanpage()', wtime*1000); } ipage = ipage + 1; } |

7楼2006-10-12 11:49:52
8楼2006-10-13 18:31:52

9楼2006-10-13 22:06:41
yahoohoo
铁杆木虫 (著名写手)
- 应助: 0 (幼儿园)
- 贵宾: 1.55
- 金币: 7632.4
- 散金: 251
- 红花: 4
- 帖子: 1176
- 在线: 167小时
- 虫号: 74894
- 注册: 2005-06-15
- 性别: GG
- 专业: 理论和计算化学
10楼2006-10-27 10:02:57














;
回复此楼
