网页抓取解密(抓取目标批量抓取煎蛋网妹子图(传统方法已失效))

优采云 发布时间: 2022-01-21 11:03

  网页抓取解密(抓取目标批量抓取煎蛋网妹子图(传统方法已失效))

  前述

  对于很多爬虫新手来说,在网上批量爬取图片可能是他们第一个真正的爬虫项目。使用的方法也是比较传统的爬取方式。图片的链接存在于网页的 HTML 源代码中。代码中只需要按照正则表达式提取图片链接(也可以通过lxml、XPath、BeautifulSoup提取)即可完成目标,但现在不同了,网页正在向轻量级方向发展,传统的HTML无法满足要求,也许在未来的某个时间,网页的HTML代码“很差”,可能有人会问,没有那个,网页怎么渲染?事实上,越来越多的网页是动态加载的。当然,这也是一种反爬机制。在这种情况下,传统的爬取方式会失败,我们需要新的策略来应对。本次讨论的目标是 。

  抓取目标

  妹子图片批量抓拍(传统方式已失效),这里博主给大家介绍一种批量抓拍的新方法。

  初步分析

  打开女孩图片的主页(),为什么这个链接看起来那么邪恶?咳咳~~,废话不多说,言归正传(是时候发挥真本事了)。按 F12 调出控制台,选择网络选项卡,然后按 F5 刷新。这时候控制台会显示很多信息。我们单击第一个,然后切换到 Response 选项卡。发送请求返回的响应信息,浏览一下会发现有很多li标签块,id属性值为comment-xxxxxxx,其中xxxxxxx是一个随机数,博主猜测每个这样的标签块是网页上的对应页面。对应的图片信息,既然我们要找图片,那么img标签一定不能错过,然后在其中一个li标签里面找img标签,可惜,img 标签中的 src 属性并没有直接给出图片。链接,不难发现,所有这些li标签中img标签中的src属性都是一样的,后面还有一个onload属性,属性值是一个JS函数。当网站加载后,会立即执行这个JS函数,函数名为jandan_img_load,然后按Ctrl+Shift+F调出全局搜索,输入jandan_img_load回车。这样做的目的是为了找到JS函数代码。简单分析可以看出,这个函数位于一个单独的JS文件中,而且文件名是一串英文和数字混合的,博主猜测JS文件名可能每次网站都是变化的加载好了,当然这只是猜测(如果要保证不出错的话,

  函数 jandan_load_img(b) {

  变量 d = $(b);

  var f = d.next("span.img-hash");

  var e = f.text();

  f.remove();

  var c = jdUqUpj6kfN609VWCtfhlWlppo*敏*感*词*g9TthN(e,“5HTs9vFpTZjaGnG2M473PomLAGtI37M8”);

  var a = $('[查看原图]');

  d.之前(a);

  d.之前(“

  ");

  d.removeAttr("onload");

  d.attr("src", location.protocol + c.replace(/(\/\/\w+\.sinaimg\.cn\/)(\w+)(\/.+\.gif)/, "$1拇指 180 美元 3"));

  if (/\.gif$/.test(c)) {

  d.attr("org_src", location.protocol + c);

  b.onload = 函数(){

  add_img_loading_mask(这个,load_sina_gif)

  }

  }

  }

  复制代码

  我们来看一下原创的关键HTML代码部分,如下:

  Ly93eDIuc2luYWltZy5jbi9tdzYwMC8wMDc2QlNTNWx5MWZzbTU1aDNxNDJqMzBxbzB4Yz*敏*感*词*eS5qcGc=

  复制代码

  对比上面两个,不难发现,在JS代码中,变量e是获取图片的hash值,然后调用一个函数进行处理,但是函数名看起来乱七八糟,而这个函数是估计返回图片的真实地址。接下来的操作是将原创HTML代码的关键部分替换为图像地址。相信大家都能理解这个大致的流程。

  更深入的分析

  更多分析请到我的博客,点击我的签名立即前往。. . . . . . . .

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线