超星电子书转PDF新思路
来源:互联网 发布:ios 高级编程 编辑:程序博客网 时间:2024/04/30 01:45
前言
前不久遇到了这样一个问题,简单说一下情况。
A可以通过网络访问超星电子图书馆。
B无法通过网络访问超星电子图书馆,且笔记本为mac,但又需要得到超星电子图书馆中的一本电子书。
遇到的困难
- mac版没有超星电子书阅读器,A下载了,直接将pdz文件拷贝给B,B是无法直接阅读的,为了这个去装个Windows虚拟机有点杀鸡用牛刀,即使有了Windows,也还需要安装证书什么的,比较麻烦。
- 在网络上搜索了一下pdz转pdf的解决方案,一般思路都为虚拟打印,但超星阅读器似乎对虚拟打印做了许多限制
- 使用 Adobe PDF 虚拟打印机无法打印,在推断超星阅读器对虚拟打印机名字做了限制之后,修改了打印机名字,可以打印,但是打印一个2MB左右的pdz,耗时非常长,甚至还不断占用我硬盘的空间,最终在占用超过20GB的硬盘空间后,我放弃了,取消了打印服务。
- 在使用 Microsoft XPS Document Writer 打印时也遇到了问题,打印出来的oxps文档虽然页数相同,但存在大量的重复页。
推断超星阅读器故意干扰了虚拟打印的结果。
并不想,也没有这个实力和时间去二进制逆向,转而思考网页上不是可以直接阅读电子书么,那直接抓下来不就行了。
网页分析
网页分析的基础是当前网络可以访问超星电子图书馆
以搜索《机械工程测试技术基础习题集》为例,选择网页阅读
可以看到网页上加载的是图片
在chrome浏览器中右键页面,点击检查
可以看到有规律的书籍图片的url地址
(也可以通过[右键图片]-[复制图片地址]来查看)
图片url规律总结如下:
前缀:
http://img.sslibrary.com/n/69c532416a7a4d5e016edea664c881caMC169856008608/img0/29B073859CC81DEA5F67C63E8AB223EE74244D42FADA201AF884A454CC5B3439E5889A5BA66DDCA585F791C41C5B8EC739FE28DD7133B5DD56BA71C37191540D3FB2D67277853A3E72841D9B61F23BED10C99C1540B13BE28E42F72DED0B4255EB715B88AE7FC96E5D28885BD89A924D7ADA/bf1/qw/10952256/D45713A60D434D72ACFCB52C416057BE
书名:前缀/bok001?zoom=0
http://img.sslibrary.com/n/69c532416a7a4d5e016edea664c881caMC169856008608/img0/29B073859CC81DEA5F67C63E8AB223EE74244D42FADA201AF884A454CC5B3439E5889A5BA66DDCA585F791C41C5B8EC739FE28DD7133B5DD56BA71C37191540D3FB2D67277853A3E72841D9B61F23BED10C99C1540B13BE28E42F72DED0B4255EB715B88AE7FC96E5D28885BD89A924D7ADA/bf1/qw/10952256/D45713A60D434D72ACFCB52C416057BE/bok001?zoom=0
版权:前缀/leg001?zoom=0
http://img.sslibrary.com/n/69c532416a7a4d5e016edea664c881caMC169856008608/img0/29B073859CC81DEA5F67C63E8AB223EE74244D42FADA201AF884A454CC5B3439E5889A5BA66DDCA585F791C41C5B8EC739FE28DD7133B5DD56BA71C37191540D3FB2D67277853A3E72841D9B61F23BED10C99C1540B13BE28E42F72DED0B4255EB715B88AE7FC96E5D28885BD89A924D7ADA/bf1/qw/10952256/D45713A60D434D72ACFCB52C416057BE/leg001?zoom=0
前言:前缀/fow001?zoom=0
http://img.sslibrary.com/n/69c532416a7a4d5e016edea664c881caMC169856008608/img0/29B073859CC81DEA5F67C63E8AB223EE74244D42FADA201AF884A454CC5B3439E5889A5BA66DDCA585F791C41C5B8EC739FE28DD7133B5DD56BA71C37191540D3FB2D67277853A3E72841D9B61F23BED10C99C1540B13BE28E42F72DED0B4255EB715B88AE7FC96E5D28885BD89A924D7ADA/bf1/qw/10952256/D45713A60D434D72ACFCB52C416057BE/fow001?zoom=0
目录:前缀/!00001?zoom=0
http://img.sslibrary.com/n/69c532416a7a4d5e016edea664c881caMC169856008608/img0/29B073859CC81DEA5F67C63E8AB223EE74244D42FADA201AF884A454CC5B3439E5889A5BA66DDCA585F791C41C5B8EC739FE28DD7133B5DD56BA71C37191540D3FB2D67277853A3E72841D9B61F23BED10C99C1540B13BE28E42F72DED0B4255EB715B88AE7FC96E5D28885BD89A924D7ADA/bf1/qw/10952256/D45713A60D434D72ACFCB52C416057BE/!00001?zoom=0
正文:前缀/000001?zoom=0
http://img.sslibrary.com/n/69c532416a7a4d5e016edea664c881caMC169856008608/img0/29B073859CC81DEA5F67C63E8AB223EE74244D42FADA201AF884A454CC5B3439E5889A5BA66DDCA585F791C41C5B8EC739FE28DD7133B5DD56BA71C37191540D3FB2D67277853A3E72841D9B61F23BED10C99C1540B13BE28E42F72DED0B4255EB715B88AE7FC96E5D28885BD89A924D7ADA/bf1/qw/10952256/D45713A60D434D72ACFCB52C416057BE/000001?zoom=0
封面:前缀/cov001?zoom=0
http://img.sslibrary.com/n/69c532416a7a4d5e016edea664c881caMC169856008608/img0/29B073859CC81DEA5F67C63E8AB223EE74244D42FADA201AF884A454CC5B3439E5889A5BA66DDCA585F791C41C5B8EC739FE28DD7133B5DD56BA71C37191540D3FB2D67277853A3E72841D9B61F23BED10C99C1540B13BE28E42F72DED0B4255EB715B88AE7FC96E5D28885BD89A924D7ADA/bf1/qw/10952256/D45713A60D434D72ACFCB52C416057BE/cov001?zoom=0
封底:前缀/cov002?zoom=0
http://img.sslibrary.com/n/69c532416a7a4d5e016edea664c881caMC169856008608/img0/29B073859CC81DEA5F67C63E8AB223EE74244D42FADA201AF884A454CC5B3439E5889A5BA66DDCA585F791C41C5B8EC739FE28DD7133B5DD56BA71C37191540D3FB2D67277853A3E72841D9B61F23BED10C99C1540B13BE28E42F72DED0B4255EB715B88AE7FC96E5D28885BD89A924D7ADA/bf1/qw/10952256/D45713A60D434D72ACFCB52C416057BE/cov002?zoom=0
注:
1. 000001或001等后缀中的数字为页码,可以更改
2. 前缀并不是固定的,同一本书的前缀会不断改变,以每次浏览器访问后检查的元素URL为准
批量获取
写个脚本或程序调用wget来保存即可,代码示例:
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <stdlib.h>#define BOOL int#define TRUE 1#define FALSE 0#define BUF_LEN 65536char prefix[BUF_LEN];void sslibrary_downloader(const char *description, const char *format){ char postfix[BUF_LEN]; char cmd[BUF_LEN]; int start_page; int end_page; printf("===================================================================\n"); printf("正在下载-%s页\n", description); printf("请输入起始页码:"); scanf("%d", &start_page); printf("请输入结束页码:"); scanf("%d", &end_page); for (int i = start_page; i <= end_page; i++) { sprintf(postfix, format, i); sprintf(cmd, "wget %s/%s?zoom=0 -O %s.png -q", prefix, postfix, postfix); printf("正在下载 %s.png\n", postfix); system(cmd); }}int main(){ printf("===================================================================\n"); printf("超星电子书下载器\n"); printf("===================================================================\n"); printf("前缀示例:中括号内为前缀\n"); printf("[http://img.sslibrary.com/n/69c532416a7a4d5e016edea664c881caMC16985\n"); printf("6008608/img0/29B073859CC81DEA5F67C63E8AB223EE74244D42FADA201AF884A4\n"); printf("54CC5B3439E5889A5BA66DDCA585F791C41C5B8EC739FE28DD7133B5DD56BA71C37\n"); printf("191540D3FB2D67277853A3E72841D9B61F23BED10C99C1540B13BE28E42F72DED0B\n"); printf("4255EB715B88AE7FC96E5D28885BD89A924D7ADA/bf1/qw/10952256/D45713A60D\n"); printf("434D72ACFCB52C416057BE]/000001?zoom=0\n"); printf("\n"); printf("请输入前缀:"); scanf("%s", prefix); sslibrary_downloader("书名", "bok%03d"); sslibrary_downloader("版权", "leg%03d"); sslibrary_downloader("前言", "fow%03d"); sslibrary_downloader("目录", "!%05d"); sslibrary_downloader("正文", "%06d"); sslibrary_downloader("封面", "cov%03d"); system("pause"); return 0;}
批量下载的png如下:
接下来用 Adobe Acrobat XI Pro 等软件将png图片转为pdf即可,直接浏览png图片也可以
windows下编译好的二进制程序我上传到csdn上了
http://download.csdn.net/detail/xbj1108_25/9831675
打开sslibrary_downloader.exe即可,依赖wget.exe
更新
2017年7月4日
感谢网友wfc5582563的评论,经他测试后发现
zoom=2是原始尺寸, zoom=0是缩略尺寸
- 超星电子书转PDF新思路
- 超星、书生电子书转PDF格式
- 超星 CAJ 转PDF 的问题
- 图片转PDF电子书
- 打破超星封锁——PDG转PDF方法
- PDF电子书
- pdf电子书
- PDF转EPUB格式电子书经验总结
- JPG格式照片转PDF格式电子书
- 【转】超星转PDF最佳方法(对打印机重新审视)
- \t\t超星pdg转PDF文档之虚拟打印法
- 超星的Pdg/Pdz转带书签目录Pdf的好方法
- 超星
- 制作pDF 格式电子书
- pdf电子书下载
- python制作pdf电子书
- python制作pdf电子书
- PDF电子书转176*208UMD电子图书(转)
- hdu1016-dfs回溯法
- poj3321 Apple Tree(树状数组+dfs)
- this对象的理解
- 系统恢复技术
- MergeSort and Quick Sort
- 超星电子书转PDF新思路
- 全选反选
- 数据结构与算法分析 c++11 题2.26找主元素
- unity之UI设计—简单按钮界面
- bzoj 3675: [Apio2014]序列分割 斜率优化dp
- MySQL逻辑架构、SQL加载执行顺序、七种JOIN模式图解
- leetcode--Maximum Depth of Binary Tree
- linux基本命令
- 双重权值(SPFA算法)