python爬虫 煎蛋网妹子图 动态爬虫1
——————来自某潮汕人的菜鸟教程
爬虫目标网站:http://jandan.net/ooxx
爬虫目标中文名称:煎蛋网 妹子图
爬虫需求:分析js下载 煎蛋网的妹子图
爬虫分析:
1、通过查看网页的源代码我们可以发现,这个网站的图片地址img src是被重新修改的,onload的意思是当网页加载完成之后触发事件 jandan_load_img 这个函数
通过F12开发者工具我们可以在Console端轻易地获取到jandan_load_img这个函数的代码,
1 function jandan_load_img(b) {
2 var d = $(b);
3 var f = d.next("span.img-hash");
4 var e = f.text();
5 f.remove();
6 var c = jdVgpgvDt3f2JfTm99E1w9KZcus9yR9FW4(e, "myblSB23xVOq7qKlgBHAUD52BF1yZlql");
7 var a = $('<a href="' + c.replace(/(\/\/\w+\.sinaimg\.cn\/)(\w+)(\/.+\.(gif|jpg|jpeg))/, "$1large$3") + '" target="_blank" class="view_img_link">[查看原图]</a>');
8 d.before(a);
9 d.before("<br>");
10 d.removeAttr("onload");
11 d.attr("src", location.protocol + c.replace(/(\/\/\w+\.sinaimg\.cn\/)(\w+)(\/.+\.gif)/, "$1thumb180$3"));
12 if (/\.gif$/.test(c)) {
13 d.attr("org_src", location.protocol + c);
14 b.onload = function() {
15 add_img_loading_mask(this, load_sina_gif)}}
}
函数体如上,下面开始解析这个函数
</div>
<div class="text"><span class="righttext"><a href="//jandan.net/ooxx/page-98#comment-3838708">3838708</a></span><p><img src="//img.jandan.net/img/blank.gif" οnlοad="jandan_load_img(this)" /><span class="img-hash">Ly93eDIuc2luYWltZy5jbi9tdzYwMC9lNDMxNjM2Nmx5MWZydmtmdDBhdHlqMjBoczBucG15aC5qcGc=</span></p>
</div>
首先先举个例子,比如上面这张美女图的源代码
那么在函数体中经过前4行时var e="Ly93eDIuc2luYWltZy5jbi9tdzYwMC9lNDMxNjM2Nmx5MWZydmtmdDBhdHlqMjBoczBucG15aC5qcGc="
var c = jdVgpgvDt3f2JfTm99E1w9KZcus9yR9FW4(e, "myblSB23xVOq7qKlgBHAUD52BF1yZlql");
第6行jdVgpgvDt3f2JfTm99E1w9KZcus9yR9FW4,这个也是个函数,同样用F12开发者工具获得这个的函数体
jdVgpgvDt3f2JfTm99E1w9KZcus9yR9FW4函数体如下:
var jdVgpgvDt3f2JfTm99E1w9KZcus9yR9FW4 = function(n, t, e) {var f = "DECODE";var t = t ? t : "";var e = e ? e : 0;var r = 4;t = md5(t);var d = n;var p = md5(t.substr(0, 16));var o = md5(t.substr(16, 16));if (r) {if (f == "DECODE") {var m = n.substr(0, r)}} else {var m = ""}var c = p + md5(p + m);var l;if (f == "DECODE") {n = n.substr(r);l = base64_decode(n)}var k = new Array(256);for (var h = 0; h < 256; h++) {k[h] = h}var b = new Array();for (var h = 0; h < 256; h++) {b[h] = c.charCodeAt(h % c.length)}for (var g = h = 0; h < 256; h++) {g = (g + k[h] + b[h]) % 256;tmp = k[h];k[h] = k[g];k[g] = tmp}var u = "";l = l.split("");for (var q = g = h = 0; h < l.length; h++) {q = (q + 1) % 256;g = (g + k[q]) % 256;tmp = k[q];k[q] = k[g];k[g] = tmp;u += chr(ord(l[h]) ^ (k[(k[q] + k[g]) % 256]))}if (f == "DECODE") {if ((u.substr(0, 10) == 0 || u.substr(0, 10) - time() > 0) && u.substr(10, 16) == md5(u.substr(26) + o).substr(0, 16)) {u = u.substr(26)} else {u = ""}u = base64_decode(d)}return u
}
传进来的参数n="Ly93eDIuc2luYWltZy5jbi9tdzYwMC9lNDMxNjM2Nmx5MWZydmtmdDBhdHlqMjBoczBucG15aC5qcGc="
t="myblSB23xVOq7qKlgBHAUD52BF1yZlql"
然后发现最后的
u = base64_decode(d)
而d=n,因此这个函数返回的是一个
base64_decode(n)
base64_decode在python中应该是这样子写的:
def base64_decode1(s):s = s.encode()missing_padding = len(s) % 4 if missing_padding != 0:s += b'=' * (4 - missing_padding)return base64.decodestring(s)
运行测试程序:
import base64def base64_decode1(s):s = s.encode()missing_padding = len(s) % 4if missing_padding != 0:s += b'=' * (4 - missing_padding)return base64.decodestring(s)print(base64_decode1('Ly93eDIuc2luYWltZy5jbi9tdzYwMC9lNDMxNjM2Nmx5MWZydmtmdDBhdHlqMjBoczBucG15aC5qcGc='))
结果:b'//wx2.sinaimg.cn/mw600/e4316366ly1frvkft0atyj20hs0npmyh.jpg'
解析到这里,后面的等你来完善
不懂的请留言
python爬虫 煎蛋网妹子图 动态爬虫1相关推荐
- Python爬虫之煎蛋网妹子图爬虫,解密图片链接加密方式
之前在鱼C论坛的时候,看到很多人都在用Python写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请求的 ...
- python爬虫--下载煎蛋网妹子图到本地
1 # -*- coding:utf-8 -*- 2 """ 3 下载煎蛋妹子到本地,通过selenium.正则表达式.phantomjs.Beautifulsoup实现 ...
- 煎蛋网妹子图爬虫(requests库实现)
煎蛋网妹子图爬虫(requests库实现) 文章目录 煎蛋网妹子图爬虫(requests库实现) 一.前言 环境配置 二.完整代码 一.前言 说到煎蛋网爬虫,相比很多人都写过,我这里试着用reques ...
- Python爬虫之煎蛋网妹子图(一)
python爬虫是数据挖掘与数据处理中的重要一部分,为了让大家深入了解爬虫,这里会更新爬虫系列教程及例子.第一篇来送福利啦!!!http://jandan.net/ooxx,先进来看一眼,是不是动力十 ...
- Python Scrapy 爬取煎蛋网妹子图实例(一)
前面介绍了爬虫框架的一个实例,那个比较简单,这里在介绍一个实例 爬取 煎蛋网 妹子图,遗憾的是 上周煎蛋网还有妹子图了,但是这周妹子图变成了 随手拍, 不过没关系,我们爬图的目的是为了加强实战应用,管 ...
- Python爬虫 煎蛋网全站妹子图爬虫
爬取流程 从煎蛋网妹子图第一页开始抓取: 爬取分页标签获得最后一页数字: 根据最后一页页数,获得所有页URL: 迭代所有页,对页面所有妹子图片url进行抓取:访问图片URL并且保存图片到文件夹. 开始 ...
- [Python爬虫]煎蛋网OOXX妹子图爬虫(1)——解密图片地址
之前在鱼C论坛的时候,看到很多人都在用Python写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请求的 ...
- [Python 爬虫]煎蛋网 OOXX 妹子图爬虫(1)——解密图片地址
之前在鱼C论坛的时候,看到很多人都在用 Python 写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请 ...
- Python爬虫:煎蛋网图片URL解密处理
转自:https://yukunweb.com/2018/5/jiandan-encryption-processing/?page=1 俞坤的博客 最近一直有朋友问我改版的煎蛋网妹子图怎么爬,因为他 ...
最新文章
- 苹果M1 Max芯片发布:570亿晶体管,图形性能堪比RTX 3080
- [高级软件工程教学]结队第1次作业成绩公布
- boost::multi_array模块实现编写调整大小函数的测试,multi_arrays 将使用来自另一个的范围来构建自己
- pythonselenium提高爬虫效率_[编程经验] Python中使用selenium进行动态爬虫
- numpy将ndarray数据拼接合并
- 个人企业作品网站导航页源码
- 50個AJAX Tools and Frameworks
- 联想昭阳k29轴拆机步骤图_【tableau入门教程23】雷达图
- springboot 静态资源访问
- 二次拟合r方_使用SPSS拟合曲线
- deeplearning.ai——通过单隐藏层的神经网络实现平面数据分类
- 设计模式六大原则——单一职责原则(SRP)
- QObject成员函数connect()函数
- Luogu P1144 最短路计数
- 在js中对数值进行取整、四舍五入等方法汇总
- 一主双从同步错误 error connecting to master ‘slave@192.168.81.158:3306‘ - retry-time: 60 retries: 1
- 双休和单休区别大吗?
- mysql运动会报名系统_运动会报名系统的简易实现
- 更深的技术探索,更多的场景实践M etaCon元宇宙技术大会圆满召开
- 凉宫春日的忧郁第四章