dmzj漫画保存
2023-03-16 来源:你乐谷
dmzj漫画保存
本文核心词:dmzj是国内最著名漫画网站,我本人也是多年使用,但随着最近正版化普及越来越快,dmzj上越来越多漫画都下架了,为了防止之后想看的时候找不到资源,提前把他们保存到本地。
需求设计
向服务器发送post请求模拟搜索
通过章节列表获取漫画对应网址
通过图片url获取并保存到本地
网页分析
随便打开一个漫画观察网址

可以看到在.shtml后面有个#@page=1
#在url中一般代表网页的一个位置
#后面出现的任何字符,都会被浏览器解读为位置标识符。这意味着,这些字符都不会被发送到服务器端
让我们翻到下一页看一下变化

可以看到只有#后面的字变了,而单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页
这也说明网站肯定不是单纯的静态页面
f12打开开发者工具

找到对应标签,在网页源代码中搜索

没有对应的标签,可能是ajax异步加载后期渲染进网页的
同过检查network监控整个请求流程

但是找遍所有文件也没有,说明他也不是异步请求的emm


但是从一开始就有一个单词一直在重复出现page
打开网页html源码可以看到开头有一段很长的代码,并且有好多关键字

把这段整理并稍微修改一下
把这段代码输入到cosole中看一下
复制到浏览器就发现这就是这一章节对应图片所有的url了
原来是把网址加密藏到网页的html文件里了

最重要的部分解决了剩下的就是模拟搜索了
f12监控搜索流程

可以看到在输入文字时有一些xhr文件
在按下enter键之后

可以看到跟前面文章中百度搜索不一样,搜索实现是用的post方法,那么只要把要搜的名称发送给服务器即可得到对应页面
分析到这一步就可以开始着手代码编写实现了
实现
首先是最麻烦的网址解密,也就是要执行网页上的js代码
这里要使用python的pyexecjs库格式如下教程参考
pre class=line-numbers language-pythoncode class= language-pythonspan class=token keywordimport/span execjsspan class=token comment# eval 和 complie 是要构建一个JS的环境/spane span class=token operator=/span execjsspan class=token punctuation./spanspan class=token builtineval/spanspan class=token punctuation(/spanspan class=token stringa = new Array(1,2,3)/spanspan class=token punctuation)/spanspan class=token comment# 可以直接执行JS代码/spanspan class=token keywordprint/spanspan class=token punctuation(/spanespan class=token punctuation)/spanx span class=token operator=/span execjsspan class=token punctuation./spanspan class=token builtincompile/spanspan class=token punctuation(/spanspan class=token triple-quoted-string stringfunction add(x,y){return x y;};/spanspan class=token punctuation)/spanspan class=token keywordprint/spanspan class=token punctuation(/spanxspan class=token punctuation./spancallspan class=token punctuation(/spanspan class=token stringadd/spanspan class=token punctuation,/span span class=token string1/spanspan class=token punctuation,/span span class=token string2/spanspan class=token punctuation)/spanspan class=token punctuation)/spanspan class=token comment# execjs@66152.compile用于执行更复杂的js代码/spanspan class=token comment# 运行结果:
#/spanspan class=token punctuation[/spanspan class=token number1/spanspan class=token punctuation,/span span class=token number2/spanspan class=token punctuation,/span span class=token number3/spanspan class=token punctuation]/spanspan class=token number12/span
Python
Copy
其他无非就是找到指定标签获取标签文本属性
直接上代码
然后
下载链接,点击这里dmzj
番号公共厕所男保洁