首页 > 编程知识 正文

python爬取美空网女神图片(python爬取美女图片程序)

时间:2023-11-29 12:18:47 阅读:310146 作者:ULMR

本文目录一览:

  • 1、图片自动下载神器!一键获取全网图片
  • 2、python3 爬取图片异常的原因?
  • 3、python爬取图片时忽略了一些图片

图片自动下载神器!一键获取全网图片

大家好,我是九剑。

经常玩电脑的兄弟们应该知道Python,易语言这种神奇的东西,可以在线爬取网上的一些数据,甚是好用。

然而Python毕竟是一种编程语音,想要短时间内去学习并掌握并不是一件容易的事情,更别提实操爬取数据了。

其实从需求上来说,普通用户无非就是 爬取一些图片文字 等等用来欣赏自用数据,比如一些小姐姐图片。

所以这次,九剑为大家带来一个神器,你只需要输入相关关键词,工具就会为你 搜集全网图片,并且无需打开链接,可以直接批量保存 !

关键词4K图下载器(Windows)

无广告,免登录,且免费

打开工具后你就会发现该工具的良心之处了,整体界面为一个小窗口, 没有任何广告弹窗,也没有任何注册登录 的选项!

所有功能一目了然,包括什么 搜索图片、保存图片、关键词输入、设置保存路径 等等,小小白看了都能直接上手操作!

别看它小,功能确是异常强大,某种意义上来说,这TM就是可视化编程,没错,这就是年轻人的第一个程序。

全网搜索,光速保存

首先设置好路径,然后直接 输入关键词,点击搜素图片,工具就会为你进行在线搜索超高清图片 ,基本都是 1080P 以上!

这里我们来尝试一下 输入关键词:动漫美女 ,搜索后可以发现没有任何延迟,工具直接将搜索结果展示了出来!

由于该工具会直接搜全网图片,所以搜索期间我们也可以点击 停止采集图片 ,然后直接点击开始 保存图片 ,工具就会批量将图片保存到相关路径!

基本上保存图片都是非常的快,保存好后这里直接去相关路径随便打开一张下载的图片进行查看,画质都非常的清晰,属于那种直接可以当桌面屏保的图片!

1.点赞并点击我头像关注

2.关注后私信我回复:28

python3 爬取图片异常的原因?

我们在下载文件时,一会会采取urlretrieve或是requests的get方式,

from urllib.request import urlretrieve

urlretrieve(self.url, filename="xxx.png")

但对于连续下载,各个文件保存是需要时间的,而程序运行永运是快于存储的,我怀疑这是水管里流水速度与缸的大小不合适的原因,那可以试试下面这种方式:

r = requests.get(url, stream=True)

with open(local_filename, 'wb') as f:

for chunk in r.iter_content(chunk_size=1024):

if chunk: # filter out keep-alive new chunks

f.write(chunk)

f.flush()

python爬取图片时忽略了一些图片

真实图片地址是在客户端javascript代码中计算出来的.

你需要寻找

span class="img-hash"Ly93dzMuc2luYWltZy5jbi9tdzYwMC8wMDczdExQR2d5MWZ3Z3h6ajlrMGtqMzBpYjBramtnaS5qcGc=/span

这样的内容,取出

Ly93dzMuc2luYWltZy5jbi9tdzYwMC8wMDczdExQR2d5MWZ3Z3h6ajlrMGtqMzBpYjBramtnaS5qcGc=

这段内容,做base64解码即得图片地址。

相应的脚本在

//cdn.jandan.net/static/min/91798e4c623fa60181a31d543488217eB2GDr79r.03100001.js

这段内容你通过get_page()爬到地页面中有,同样,该页面中有这样的html(为便于阅读已重排格式):

div class="text"

  span class="righttext"

    a href="//jandan.net/ooxx/page-34#comment-4001800"4001800/a

  /span

  p

    img src="//img.jandan.net/img/blank.gif" onload="jandan_load_img(this)" /

    span class="img-hash"Ly93dzMuc2luYWltZy5jbi9tdzYwMC8wMDczdExQR2d5MWZ3Z3h6ajlrMGtqMzBpYjBramtnaS5qcGc=/span

  /p

/div

这个img的onload调用的函数就在前面给出的那个js文件中:

function jandan_load_img(b){

  var d=$(b);

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

  var e=f.text();

  f.remove();

  var c=jdDw3Ldvi4NcbKboi4X19hCAmdC3Q3aZvN(e,"DGmLfT4H73yJdXXpXs3pw7uAiICcflZS");

  var a=$('a href="'+c.replace(/(//w+.sinaimg.cn/)(w+)(/.+.(gif|jpg|jpeg))/,"$1large$3")+

          '" target="_blank" class="view_img_link"[查看原图]/a');

  d.before(a);

  d.before("br");

  d.removeAttr("onload");

  d.attr("src",location.protocol+c.replace(/(//w+.sinaimg.cn/)(w+)(/.+.gif)/,"$1thumb180$3"));

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

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

    b.onload=function(){

      add_img_loading_mask(this,load_sina_gif)

  }

}

它调用了jdDw3Ldvi4NcbKboi4X19hCAmdC3Q3aZvN对img-hash的内容做解码,这个函数同样在这个js文件中:

var jdDw3Ldvi4NcbKboi4X19hCAmdC3Q3aZvN=function(o,y,g){

  var d=o;var l="DECODE";

  var y=y?y:"";

  var g=g?g:0;

  var h=4;

  y=md5(y);

  var x=md5(y.substr(0,16));

  var v=md5(y.substr(16,16));

  ...中间部分略去...

  if(l=="DECODE"){

    m=base64_encode(m);

    var c=new RegExp("=","g");

    m=m.replace(c,"");

    m=u+m;

    m=base64_decode(d)

  }

return m

};

你只需要在Python使用相应的库对抓取到的img-hash内容做解码即可得到图片地址。

你使用了str的find来从文本中定位位置,这样做太麻烦了,太多的代码细节,使用re模块做正则匹配就简单很多,更快的是直接使用现有的爬虫库.

使用re进行正则匹配,只需要使用正则式'span class="img-hash"(.+?)'即可提取出该页面中所有加密的图片地址。

import re

import base64

pat = re.compile('span class="img-hash"(.+?)')

...

def get_imgurls(url):

    urls = []

    for imgurl in pat.findall(url_open(url).decode('utf-8')):

        .append(str(base64.b64decode(imgurl), 'utf-8'))

    return urls

然后就可以对get_imgurls返回的列表遍历,逐个交给save_img处理了。

使用爬取库也只需要寻找span,从中找出class='img-hash'即可读取text。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。