Python爬蟲實戰篇 | “花式掃【五福】”,人人都能用的一鍵下載海量圖片


ZFB一年一度的【集齊五福,拼手氣分5億】活動火熱進行中
1月24日22:18開獎
2020年新增了【全家福】卡,幫還全家花唄大獎,最高能還48888元
集齊五福就能參加億級大項目了,心動不如行動
 

今天和大家分享一下,如何一鍵下載海量圖片,花式掃【五福】,喜歡哪張掃那種,當然工作中也是經常用到的,實測“一分鐘1000張左右”。

 

獲取方法:

公衆號回覆【圖片下載】即可。得到的文件包括:

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

  2. py文件,程序員可以直接使用,隨意拿去二次開發,結合圖形化界面,達到極致用戶體驗。

  3. 文末有附源代碼。

 

使用方法:

  1. 按照提示輸入,你想下載的圖片,比如,輸入【】回車。

  2. 然後根據提示輸入,你想下載的圖片數量,比如,輸入【50】回車。

  3. 下載的圖片會在執行文件(exe或py文件)的同級路徑image文件夾下。

     

 

相關截圖:

王者榮耀

 

英雄聯盟

 

源代碼:

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


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章