24小时热门版块排行榜    

查看: 129  |  回复: 4
当前主题已经存档。
【悬赏金币】回答本帖问题,作者xusongwhy将赠送您 20 个金币
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xusongwhy

铁杆木虫 (著名写手)

[求助] 请问如何下载电子书

我用帐号进入NETLIBRARY 或 QUESTIA 下书,总是一页页下载复制到WORD里,有没有方法可以整本下载呀?哪位兄弟知道呀?

» 猜你喜欢

奉献越多,得到越多!!!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

nucleus01

至尊木虫 (著名写手)

小木虫北庭节度使

netlibrary上的书籍分pdf版和html版,其中pdf格式下载要相对容易些,基本没有二次认证的问题,html版的二次认证问题就比较多了,我以后再介绍。

用到的工具:Microsoft Internet Explorer 6.0版以上,Mouse and Key Recorder 5.0版以上。

简要说明:我用的是XP自带的IE6.0,有个好处我稍后会说明;M&K Recorder必须5.0以上,否则有个重要的功能没有,另外,M&K Recorder的脚本功能非常强大,适当编辑几乎可以做任何重复性的工作。

netlibrary上的pdf书籍的格式是:http://www.netlibrary.com/nlread ... leName=Page_YYY.pdf
XXXXX代表书籍代码,YYY代表页码,由于页码是变量,所以url.txt文件里我们写http://www.netlibrary.com/nlread ... &FileName=Page_就可以了(XXXXX要改为你想下的书籍代码,Page后有个下划线,Page_),剩下的会在脚本里自动添加;


脚本编写:

〔注意〕由于我用的是屏幕绝对坐标,所以脚本中有关鼠标位置是和显示器分辨率相关的,我是按照1152X864的分辨率设计的,各位用的时候要参考自己的具体情况更改。

1. netlibrary_pdf.krc

这个script的作用是自动按顺序下载netlibrary上某部书的每一页。首先我们假设有本书共有650页,我们把它保存在c:\\netlibrary目录下。

{{\\\\\\\' //后面的语句不是脚本的注释格式,应用时要去掉

{{If {{FindFile C:\\netlibrary\\650.pdf} = {{True};{{Exit};
//这句用来控制下载结束,当然也可以用循环数loop来控制,但有时候意外中断要从中间开始,loop值往往会忘了改,加上这句就不用担心了,也省了计算loop的麻烦。

{{SetString1} URL
//URL为书籍网址,将它保存在字符串变量string1中

{{Offset {{clipboard}
//利用剪贴板传递起始页参数,所以使用前要预先copy初始值到剪贴板中,比如从第一页开始下,就copy一个0到剪贴板里。
//offset是和loop连用的,loop值就是当前循环数+offset,比如offset设为45,现在运行第34次循环,那么loop值为45+34=79,是不是很有用

{{Switch Microsoft Internet Explorer
//使IE为活动窗口,必须保证IE在运行
{{Mouse 1, 1, 585, 17, 0
//移动鼠标光标,参数依次简介:1 - 左键;1 - 单击(2为双击);585, 17 - 将鼠标光标移动到屏幕位置坐标(和分辨率有关);0 - 执行点击(1为仅移动鼠标而不点击)
%d
//Alt + d,焦点移到地址栏的快捷键
{DEL}
{{String1}
{{Loop}
.pdf
{ENTER}
//输入网址并回车

{{label wait4win}
{{Mouse 1, 1, 1129, 28, 1
{{If {{WaitForScreenChange 3,15,1} = {{True};;{{goto end}
{{If {{CheckWindow 文件下载} = {{True};;{{goto wait4win}
//我认为这四句是脚本的精华所在,原理是:当IE在下载网页的时候,IE窗口的右上角有个会飘动windows logo, 当网页下载完成时,这个logo就不动了,我们可以利用这一点来判断网页是否下载完毕,这时候文件下载窗口还未出现,以前用delay来判断很不可靠,容易出错,用这个就没问题了。
//WaitForScreenChange是从5.0版才开始提供的,所以低版本的就没办法了。参数简介:3 - 3秒为一个判断单位;15 - 考察当前光标位置15X15像素的变化情况,这个大小相当于标准鼠标整个三角箭头部分,不包括箭头下的柄,而且不考虑鼠标箭头的任何变化;1 - 改变了一次就认为是变化了。合起来解释为:如果在3秒内,当前光标位置后15X15像素大小的区域改变了至少一次,那么函数就返回True。
//CheckWindow是用来判断pdf是否下载完毕的,同样比delay可靠多了。
//经测试,这四句执行的效果非常理想,不论网络速度如何,它都能适应,而且在尽可能短的时间内进行下一步,但还是有可能出现问题,主要表现为漏页,分析可能就是输入网址并回车后,IE暂时没有响应,于是logo在3秒内不动,脚本就认为本页不存在(注:当原书有某一页是空白页的时候,编排需要这是有可能的,netlibrary就会省略这一页,网页上仅提示“你请求的页面不存在”,这时候CheckWindow就不能正常工作,陷于死循环,所以要加入goto end跳转),于是结束本页下载,而实际上该页是可能存在的。

s
//出现下载窗口时选择保存文件的快捷键,个人感觉还是不要用回车的好
{{Delay 500}
{{Loop}
.pdf
{ENTER}
//输入文件名,并回车,这样文件名总是和页码相对应,即使有漏页也不会搞错。

{{label savepdf}
{{Mouse 1, 1, 633, 352, 1
{{If {{WaitForScreenChange 3,15,1} = {{True};{{goto savepdf};
//判断pdf是否下载完毕,如果用CheckWindow的话会有问题,还是用这个比较可靠。
//下载文件时,下载窗口里有个一张纸从地球飞向文件夹的动画,当纸到达文件夹时,文件夹左上角会出现个红点, 我把鼠标就放在这个红点上。

{{label end}
//本次循环结束


使用方法:

1. 禁用Acrobat的在线浏览功能,否则麻烦多多。以Acrobat 5.0为例,到编辑/首选项/选项/网络浏览器选项里,去掉“在浏览器中显示PDF”的钩选。这样IE对pdf文件就不会调用Acrobat嵌入式打开了,而是出现下载提示。

2. 运行IE并将窗口最大化,登录netlibrary,找出你要下的书的ID号以及总页数,并下载其中一页,比如cover页,这样可以生成该书的cookie信息。

3. 运行Mouse and Key Recorder,根据总页数设置循环次数,并将起始页减去一复制到剪贴板,比如你下到一半中断了,想从51页开始继续,就复制50到剪贴板中。

4. 点Play,然后就可以睡觉去了。

5. 睡醒后,看看一本书是不是乖乖得躺在你的硬盘上,然后找个软件把pdf合并一下就免费搞到一本书。爽吧!

6. 如果有漏页的,可以自己手动检查并补档,也可以写个脚本让Mouse and Key Recorder代劳,这里我就不给出了,有兴趣的可以根据前面讲的自己练练,体验一下Mouse and Key Recorder的强大。
爽是要付出代价的!
3楼2007-11-11 20:00:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

daixj21

木虫 (知名作家)

小木虫税务总局局长——水虫

直接点另存为不就完了吗
或者收藏到收藏夹允许脱机使用
自觉纳税光荣偷税漏税可耻.............——木虫税务局
2楼2007-11-11 19:49:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chineseway

捐助贵宾 (知名作家)

离...

笨方法是可以试试 网文快捕
如何学代理:http://emuch.net/bbs/viewthread.php?tid=274515&fpage=1
4楼2007-11-11 22:08:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
不应助 确定回帖应助 (注意:应助才可能被奖励,但不允许灌水,必须填写15个字符以上)
信息提示
请填处理意见