某文库文档下载思路及实现
背景环境就不说了,直接上思路目标网站**aHR0cHM6Ly9tYXguYm9vazExOC5jb20vaHRtbC8yMDIxLzA3MjUvODAyNzE0MDEyNDAwMzEyNC5zaHRt**base64加密
然后F12刷新一下,看一下网络请求数据,按类型进行排序看看有什么特殊的,对于一般的图片数据直接滤掉。重点是script类型的,每个点开看看返回值的预览
这里是排序之后的数据图片
01
点开其中一个后可以看到
如下所示
02
像是链接在浏览器打开看看
03
显然是我所需要的结果
对于请求地址还需要进行分析
对于剩下的部分再进行预览发现
https://openapi.book118.com/getPreview.html?&project_id=1&aid=384842396&t=bab2b40047ef33d3cb275b7cc01d752d&view_token=Ynvp_0jXyUnnbZnJWYbp4UGpXrkof2y9&page=1&callback=jQuery18308547967607001021_1669727735419&_=1669727735531
https://openapi.book118.com/getPreview.html?&project_id=1&aid=384842396&t=bab2b40047ef33d3cb275b7cc01d752d&view_token=Ynvp_0jXyUnnbZnJWYbp4UGpXrkof2y9&page=7&filetype=docx&callback=jQuery18308547967607001021_1669727735419&_=1669728705806
进行文本对比可以发现差别在于page后的参数不同 ,修改page参数在浏览器打开看看
在浏览中查看,显然也是需要的,在其网站可以看到这个pdf只有52页而且当变化page参数时,有些数据的返回值是一样的,从返回的结果中也可以看出,一次给出六个图片的地址,在设置循环的时候要注意一下步长和起始
该分析到的都分析完了,上代码
接下来写个python脚本进行请求下载即可
最后可以将所有的图片利用网上工具给整合到一个PDF中
这是源码展示
```
import requests
import json
import time
# 构造一个header
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",
"Referer": "https://max.book118.com/",
"Host": "openapi.book118.com",
}
data = {}
#那个文档只有52页
for page in range(1, 52, 6):
print(page)
response = requests.get(
url="https://openapi.book118.com/getPreview.html?&project_id=1&aid=384842396&t=bab2b40047ef33d3cb275b7cc01d752d&view_token=Ynvp_0jXyUnnbZnJWYbp4UGpXrkof2y9&page=" + str(
page) + "&filetype=docx&callback=jQuery18307122965073661289_1669709562152&_=1669709622126",
headers=header)
time.sleep(3) # 防止请求太快而得不到数据
# print(response.text)
# 因为返回的数据不完全是json格式的需要处理一下
json_data = json.loads(response.text)
res = json_data["data"]
print(res)
data.update(res) # 将请求到的数据都合并到一个字典中
print(data)
for key in data.keys():
data = data.replace("//", "")
print(data)
#对于字典中的链接发起请求
for key in data.keys():
response = requests.get("http://" + data)
img = response.content
# 二进制写入
with open("./" + str(key)+".png", 'wb') as f:
f.write(img)
time.sleep(3) # 防止请求太快而得不到数据
print(data+"写入成功")
``` 你还可以通过orc直接合成文档 谢谢分享 {:301_984:}感谢分享~ 谢谢 分享学到了! VIP的扒不到 能不能私聊我说下方法,看不到 有急用 不知道效果如何,要用用再评论 感谢分享!收藏了! 感谢大神分享的思路,马上试试去
页:
[1]
2