Python爬虫实战篇 | “花式扫【五福】”,人人都能用的一键下载海量图片


ZFB一年一度的【集齐五福,拼手气分5亿】活动火热进行中
1月24日22:18开奖
2020年新增了【全家福】卡,帮还全家花呗大奖,最高能还48888元
集齐五福就能参加亿级大项目了,心动不如行动
 

今天和大家分享一下,如何一键下载海量图片,花式扫【五福】,喜欢哪张扫那种,当然工作中也是经常用到的,实测“一分钟1000张左右”。

 

获取方法:

公众号回复【图片下载】即可。得到的文件包括:

  1. exe文件,人人都可以直接使用的,秒懂秒下载海量图片。

  2. py文件,程序员可以直接使用,随意拿去二次开发,结合图形化界面,达到极致用户体验。

  3. 文末有附源代码。

 

使用方法:

  1. 按照提示输入,你想下载的图片,比如,输入【】回车。

  2. 然后根据提示输入,你想下载的图片数量,比如,输入【50】回车。

  3. 下载的图片会在执行文件(exe或py文件)的同级路径image文件夹下。

     

Python爬虫实战篇 | “花式扫【五福】”,人人都能用的一键下载海量图片_第1张图片

 

相关截图:

Python爬虫实战篇 | “花式扫【五福】”,人人都能用的一键下载海量图片_第2张图片

Python爬虫实战篇 | “花式扫【五福】”,人人都能用的一键下载海量图片_第3张图片

王者荣耀

Python爬虫实战篇 | “花式扫【五福】”,人人都能用的一键下载海量图片_第4张图片

 

英雄联盟

Python爬虫实战篇 | “花式扫【五福】”,人人都能用的一键下载海量图片_第5张图片

 

源代码:

import requests,time,os,math

#获取下载的图片类型
def get_word():
    get_word = input('输入下载的图片,如【福】【鼠】:   ')
    while True:
        if len(get_word) != 0:
            break
        else:
            get_word = input('输入错误,输入下载的图片,如【福】【鼠】:   ')
    return get_word
#获取下载的图片数量
def get_img_num():
    get_img_num = input('输入下载图片的数量:   ')
    while True:
        if get_img_num.isdigit():
            break
        else:
            get_img_num = input('请输入数字,再次输入您要下载图片数量:   ')
    return get_img_num

#下载图片
def down_img(word,img_num):
    headers = {
    # 标记了请求从什么设备,什么浏览器上发出,伪装为浏览器
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
    }
    url = 'https://image.baidu.com/search/acjson'   # 数据来源 xhr下json数据
    page_size = math.ceil(int(img_num)/30)     # 图片数量除以每页30条数据,向上取整得到分页页码
    num = 1
    file_path = 'image/'
    if os.path.exists(file_path) == False:
        os.makedirs(file_path)
    for i in range(page_size):
        params = {
        'tn': 'resultjson_com','ipn': 'rj','ct': '201326592','is': '','fp': 'result',
        'queryWord': word,'cl': '2','lm': '-1','ie': 'utf-8','oe': 'utf-8','adpicid': '','st': '-1','z': '','ic': '0','hd': '','latest': '','copyright': '',
        'word': word,'s': '','se': '','tab': '','width': '','height': '','face': '0','istype': '2','qc': '','nc': '1','fr': '','expermode': '','force': '',
        'pn': page_size*30,'rn': '30','gsm': '','1578970597290': '',    # page_size*30 (30,60,90) json数据中每页30条数据
        }
        html = requests.get(url,headers=headers,params=params)
        for j in range(30):
            if num > int(img_num):  #下载的图片数量大于输入的图片数量,则停止下载
                print('')
                print('==========图片全部下载完成==========')
                print('')
                print('图片在image路径')
                print('10秒后自动关闭窗口')
                time.sleep(10)
                break
            img_url = html.json()['data'][j]['middleURL']   # json数据结构
            if '.jpg' in img_url or '.jpeg' in img_url or '.png' in img_url:    #判断 如果图片地址带后缀,则下载
                data = requests.get(img_url).content    # 图片为二进制数据
                with open(file_path+word+' - %d.jpg' % num,'wb') as f:    # D盘fu文件夹下存放下载的图片
                    f.write(data)
                print('已下载%d张图片了' % num)
                num += 1
                # time.sleep(1)   # 延迟1秒爬取


word = get_word()   # 获取想要下载的图片
img_num = get_img_num()     # 获取下载图片的数量
down_img(word,img_num)      # 执行下载


 

秒变大牛,就是这么简单~



每周每日,分享Python实战代码,入门资料,进阶资料,基础语法,爬虫,数据分析,web网站,机器学习,深度学习等等。


​微信群(关注「Python家庭」一起轻松学Python吧)

​QQ ②群(983031854


 

你可能感兴趣的:(Python爬虫)