各位老铁们,大家好,今天由我来为大家分享书链电脑下载,以及书链下载的文件怎么导入电脑的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
爬虫目标
博主在假期遇到有家长,拿着老师的布置的作业来打印,结果是如下这样的电子书,还不能下载,所以打算编写爬虫进行下载,发现有书籍的链接全都通过Js加密了,这不能忍,这么能阻止小学生做作业呢。
网站:https://mp.zhizhuma.com/book/shelf.htm?id=4872
所用模块:
获取数据每一页的链接的Json\ndefget_encryptedData(ebookId):\npass\n\n下载保存连接\ndefdownload_and_save(datadict,differenceDate):\n\nif__name__==&39;:\n39;https://mp.zhizhuma.com/book/sample2.htm?id=52753&shelfId=4872&39;id=(\\d+)&获取书籍的URL\nencryptedData=get_encryptedData(ebookId)\n39;timestamp&创建文件夹\nmakedirs(str(differenceDate))\nfordatainencryptedData.get(&39;):\n下载书籍\ndownload_and_save(pageNo_url,differenceDate=differenceDate)
get_encryptedData()
通过Js分析,发现这段Js的解密,我们使用Python来实现,逻辑并不复杂。
defget_encryptedData(ebookId):\nurl=&39;\ndata={\n&34;:ebookId,\n&34;:&34;,\n&34;:&34;,\n&34;:&34;,\n}\nj=requests.post(url=url,data=data).json().get(&39;)\n\n34;Suj4XDDt3jPsH9Jj&39;utf8&39;\\x0f&34;utf-8&获取真正的连接,有时效\ndefget_auth_key(data,differenceDate):\n39;pageNo&解密构造参数\nimgurl=data.get(&39;).split(&39;)[1]\nuid=&34;\nrand=str(random.random())\ntimestamp=str(int(time.time())-int((int(time.time()*1000)-differenceDate)/1000)+15)\nsstring=imgurl+&34;+timestamp+&34;+rand+&34;+uid+&34;\nmd5=hashlib.md5()\nmd5.update(sstring.encode())\nmd5hash=md5.hexdigest()\nauthKey=&39;+timestamp+&34;+rand+&34;+uid+&34;+md5hash\nurl=&34;+imgurl+&34;+authKey\nreturn{&34;:pageNo,&34;:url}
download_and_save()
39;url&34;/&39;pageNo&34;.png&34;wb”)asfile:\nfile.write(c)
运行
可以很容易扩展成多线程。
关于本次书链电脑下载和书链下载的文件怎么导入电脑的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。
