——————来自某潮汕人的菜鸟教程

    爬虫目标网站: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)
在此例中n="Ly93eDIuc2luYWltZy5jbi9tdzYwMC9lNDMxNjM2Nmx5MWZydmtmdDBhdHlqMjBoczBucG15aC5qcGc="

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相关推荐

  1. Python爬虫之煎蛋网妹子图爬虫,解密图片链接加密方式

    之前在鱼C论坛的时候,看到很多人都在用Python写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请求的 ...

  2. python爬虫--下载煎蛋网妹子图到本地

    1 # -*- coding:utf-8 -*- 2 """ 3 下载煎蛋妹子到本地,通过selenium.正则表达式.phantomjs.Beautifulsoup实现 ...

  3. 煎蛋网妹子图爬虫(requests库实现)

    煎蛋网妹子图爬虫(requests库实现) 文章目录 煎蛋网妹子图爬虫(requests库实现) 一.前言 环境配置 二.完整代码 一.前言 说到煎蛋网爬虫,相比很多人都写过,我这里试着用reques ...

  4. Python爬虫之煎蛋网妹子图(一)

    python爬虫是数据挖掘与数据处理中的重要一部分,为了让大家深入了解爬虫,这里会更新爬虫系列教程及例子.第一篇来送福利啦!!!http://jandan.net/ooxx,先进来看一眼,是不是动力十 ...

  5. Python Scrapy 爬取煎蛋网妹子图实例(一)

    前面介绍了爬虫框架的一个实例,那个比较简单,这里在介绍一个实例 爬取 煎蛋网 妹子图,遗憾的是 上周煎蛋网还有妹子图了,但是这周妹子图变成了 随手拍, 不过没关系,我们爬图的目的是为了加强实战应用,管 ...

  6. Python爬虫 煎蛋网全站妹子图爬虫

    爬取流程 从煎蛋网妹子图第一页开始抓取: 爬取分页标签获得最后一页数字: 根据最后一页页数,获得所有页URL: 迭代所有页,对页面所有妹子图片url进行抓取:访问图片URL并且保存图片到文件夹. 开始 ...

  7. [Python爬虫]煎蛋网OOXX妹子图爬虫(1)——解密图片地址

    之前在鱼C论坛的时候,看到很多人都在用Python写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请求的 ...

  8. [Python 爬虫]煎蛋网 OOXX 妹子图爬虫(1)——解密图片地址

    之前在鱼C论坛的时候,看到很多人都在用 Python 写爬虫爬煎蛋网的妹子图,当时我也写过,爬了很多的妹子图片.后来煎蛋网把妹子图的网页改进了,对图片的地址进行了加密,所以论坛里面的人经常有人问怎么请 ...

  9. Python爬虫:煎蛋网图片URL解密处理

    转自:https://yukunweb.com/2018/5/jiandan-encryption-processing/?page=1 俞坤的博客 最近一直有朋友问我改版的煎蛋网妹子图怎么爬,因为他 ...

最新文章

  1. 苹果M1 Max芯片发布:570亿晶体管,图形性能堪比RTX 3080
  2. [高级软件工程教学]结队第1次作业成绩公布
  3. boost::multi_array模块实现编写调整大小函数的测试,multi_arrays 将使用来自另一个的范围来构建自己
  4. pythonselenium提高爬虫效率_[编程经验] Python中使用selenium进行动态爬虫
  5. numpy将ndarray数据拼接合并
  6. 个人企业作品网站导航页源码
  7. 50個AJAX Tools and Frameworks
  8. 联想昭阳k29轴拆机步骤图_【tableau入门教程23】雷达图
  9. springboot 静态资源访问
  10. 二次拟合r方_使用SPSS拟合曲线
  11. deeplearning.ai——通过单隐藏层的神经网络实现平面数据分类
  12. 设计模式六大原则——单一职责原则(SRP)
  13. QObject成员函数connect()函数
  14. Luogu P1144 最短路计数
  15. 在js中对数值进行取整、四舍五入等方法汇总
  16. 一主双从同步错误 error connecting to master ‘slave@192.168.81.158:3306‘ - retry-time: 60 retries: 1
  17. 双休和单休区别大吗?
  18. mysql运动会报名系统_运动会报名系统的简易实现
  19. 更深的技术探索,更多的场景实践M etaCon元宇宙技术大会圆满召开
  20. 凉宫春日的忧郁第四章

热门文章

  1. MAC实现睡眠和休眠唤醒
  2. 淘宝/天猫获得淘宝商品详情高级版 API
  3. 搜狗浏览器默认皮肤无法修改问题
  4. Android设置drawableRight或drawableLeft后设置图标与文字间距
  5. 高博基于stereo-imu的VO运行尝鲜
  6. 315品牌危机公关2021年最新完全指南,公关人看完神清气爽!
  7. 联合搜索:搜索中的所有需求
  8. 大专考试计算机英语题目,专科英语入学考试题
  9. 电子科技大学计算机博士要求,博士研究生发表论文的要求-电子科技大学.PDF
  10. 美国造出最大电视 4K电视262英寸超大屏