一、前言
科学文库使用福昕的在线阅读模式!
之前我写过一个JS脚本用来获取科学文库的电子书,但是随着接口的失效,再维护那个脚本便没有多大意义。在通过对之前方法的重新梳理,我找到了新的接口,通过爬虫获取图片的方式把每一页的图片获取至本地,再合成为一个PDF文件。但这个思路的难点在于:图片的接口,而不是如何合成PDF(这个网上有很多教程)。
说到底,这个帖子只是提供了一个图片的接口,而不是提供一个完整得到电子书的方法。
二、接口
https://wkobwp.sciencereading.cn/asserts/***fileid***/image/***num***/100
参数有fileid和num两个,num为从0开始的序数,下面主要介绍fileid的获取
由于科学文库书籍的在线预览功能是福昕阅读器提供的,所以存在以下关系:科学文库的id----POST请求----福昕的fileid。在我上一篇的文章中,我通过Ajax提供POST请求,这次为了方便发挥Python爬虫的优势,提供一个Python获取fileid的方式
# 科学文库书籍图片--fileid方式 # encoding=utf-8 import re import requests headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1" } url = input("请输入链接:") # 格式形如:https://book.sciencereading.cn/shop/book/Booksimple/show.do?id=*** bookid = re.findall(r'(?<=id=)(.*)', url)# 获取链接上id的值 data = 'params=%7B%22params%22%3A%7B%22file%22%3A%22http%3A%2F%2F159.226.241.32%3A81%2F' + bookid[0] + '.pdf%22%7D%7D' r = requests.post("https://wkobwp.sciencereading.cn/api/file/add", headers=headers, params=data)# POST请求 fileid = re.findall(r'(?<=\"result\"\:\").*(?=\")', r.text) print(fileid[0])
执行此代码即可获得fileid,将其放入接口中,如果没有显示就多刷新几次,两个参数都正确即可得到清晰的图片。
三、写在结束之前
对于我来说,解题方法比得到答案更激动人心,我暂时还没有需要下载电子书的需求,就不去把这个项目完善了,或许以后会慢慢完善,但还不是现在。
来博客园将近一年了,因为我本身并不是计算机专业出身,只是出于爱好和生活上的需要才会用编程来解决问题,所以更新的频率很低,而且在大学的上课时间一般都挺无聊,想不出什么好的点子,所以下一次更新永远是未知的。
标签:文库,--,科学,接口,阅读器,福昕,图片,fileid From: https://www.cnblogs.com/harl02/p/17054009.html