某在线预览文档网站PDF下载

2019-08-24  本文已影响0人  woodywoo2017

今天看到某人在用网站在线看一本书,问他为什么不下载下来,他说那网站下载的话很贵。我看了下,那个网站确实比较坑。然后我想了下,既然可以在线预览的话,那肯定就有办法下载。比如这本书:《统计学:在经济和管理中的应用》https://max.book118.com/html/2018/0214/153062403.shtm
页面是这样的:

f90a62cdb640225886b8fb17346daf1.png
点击那个 “全屏预览”,F12打开开发者工具查看network,可以看到它做了一个接口请求,叫getPreview:
b396a5b6acc896e612e7bbc69a1229b.png

这个接口请求返回的,就是每一张预览的图片的url地址,一页返回6张。


8938d8db5835226c4f42d60716cb06d.png

所以,我们只要能构造这个接口,变换页码去请求,就能拿到所有的图片url。

这个接口请求里,唯一特殊的就是那个view_token 参数,我看了下,它这个token好像是跟每一篇文章对应的。 怎么拿呢?

下面有个Referer,拿这个URL去请求,返回的页面里就有。那个bookID其实就是网页地址https://max.book118.com/html/2018/0214/153062403.shtm!最后那个:153062403拿这个ID去构造一个URL请求,就能拿到token.

bb7142d5dae98f1ba51c21894e380f9.png
拿到token之后构造借口就能拿到所有图片地址。

然后就是图片转化为PDF。网上很多人都是把图片下载到本地之后,然后再合并成PDF。我试了下,根本不用。使用 reportlab 这个库。图片地址可以是远程网页地址。不用下载到本地。就是上面拿到的别人服务器上的图片URL,直接传给drawImage这个函数就行了。

bb570841f8890402e75668569016d56.png

搞了个界面,这玩意用起来是这样,把网页地址复制进去,点击开始下载,然后桌面就多了一本PDF。上面提到的那本统计学下来就是这样。两个小问题,书名要自己改一下,我是用ID创建的书名,另外,只能拿到能在线预览的页数(有些书不能全部预览)。

ee0ea180ab16df2372a28f3b5829192.png

这个本来可以打包成工具,但打包成的exe文件其实很多时候都会用不了(系统环境不一样,很多电脑管家也会直接杀exe文件),算了吧,这功能其实也没什么用。

学习python想要源码的,可以关注公众号:“单人双打”。发消息问我要。如有需要下载max.book118.com这个网站书籍的,也可以找我。

上一篇下一篇

猜你喜欢

热点阅读