- 作者帖子
张飞白游客众所周知,现在下载故宫名画记的方法,是利用@未曾先生提供的那个书签,将图像界面转换成包含dzi关键信息的字符串
javascript:document.getElementsByTagName("body").innerHTML = JSON.stringify(viewer.source.Image);
这个方法是可以实现下载,但仍需手动将获取的关键信息填入dzi文件中,再调用dezoomify-rs下载
我在研究下载方法时,一直想像着能否通过python请求网页,自动获得包含dzi的关键信息,然后生成dzi文件,再调用dezoomify-rs下载,省动中间手动的步骤。但python以爬静态网页信息为主,而名画记中的dzi信息是包含在js动态生成的“viewer.source.Image”内容中,这点我似乎没有找到特别方便的方法,因为我对于python直接获取js动态加载信息这块还不擅长
后来倒是通用selenium实现了,以赵昌写生蛱蝶图卷为例,关键代码大概如下:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://minghuaji.dpm.org.cn/paint/appreciate?id=tdt75x11t704sytm35pepovbka2gygdn')
json = driver.execute_script('return viewer.source.Image')
这是通用webdriver的execute_script()功能来执行js代码获取结果,但仍需要配合chromedriver工具及chrome来使用,稍显没有那么方便
近日我看@zhudw兄更新了booget版本,已经包含了故宫博物院及名画记的下载,我简单测试过,也是能够生成dzi文件,但生成dzi文件的方式,似乎不是调用selenium等来获取关键信息的。看过源码,没有怎么看懂
请教@zhudw兄台,请问您是怎样获取js加载的动态内容的?还请赐教,谢谢!!
张飞白游客多谢,一会我再尝试一下。
我的理解,你给的书签解析法,是直接获取最终结果,不必理会它的计算过程,我本来也是朝这个方向来搞的。
现在您给的是正面刚的方法,这个是我没有想过的,太感谢了!!
未曾管理员
zhudw游客@张飞白 #82694
未曾先生已经给出了方法,我的思路也是一样的。可以参考 github.com/dewei...dpm/mod.go
顺序是 base64 decoder -> AES( mode=CBC, pad7补全)。
未曾管理员@张飞白 #82694
另外,名画记的解密key和数字文物库那边不一样
名画记
$key = "hQKWqRCPUFjUXv0q"; $iv = 'SH8csHyhBEnAPtwb';
数字文物库
$key = "tNzf3IrAXDCepOVQ"; $iv = 'nE0d1QQdSy45uBX3';
- 作者帖子
正在查看 5 个帖子:1-5 (共 5 个帖子)
正在查看 5 个帖子:1-5 (共 5 个帖子)
正在查看 5 个帖子:1-5 (共 5 个帖子)