Python實用案例,Python指令碼,Python實現批量下載百度圖片
阿新 • • 發佈:2021-08-04
往期回顧
前言
今天我們就利用python指令碼實現批量下載百度圖片。直接開整~
效果展示
編寫思路:
1.獲取圖片的url連結
首先,開啟百度圖片首頁,注意下圖url中的index
接著,把頁面切換成傳統翻頁版(flip),因為這樣有利於我們爬取圖片!
然後,右鍵檢查網頁原始碼,直接(ctrl+F)搜尋 objURL
這樣,我們發現了需要圖片的url了。
2.把圖片連結儲存到本地
現在,我們要做的就是將這些資訊爬取出來。
注:網頁中有objURL,hoverURL…但是我們用的是objURL,因為這個是原圖
正則表示式獲取objURL
results = re.findall('"objURL":"(.*?)",', html)
原始碼展示:
1.獲取圖片url程式碼:
# 獲取圖片url連線 for i in range(int(pn)): # 1.獲取網頁 print('正在獲取第{}頁'.format(i+1)) # 百度圖片首頁的url # name是你要搜尋的關鍵詞 # pn是你想下載的頁數 url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=%s&pn=%d' %(name,i*20) headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4843.400 QQBrowser/9.7.13021.400'} # 傳送請求,獲取相應 response = requests.get(url, headers=headers) html = response.content.decode() # print(html) # 2.正則表示式解析網頁 # "objURL":"http://n.sinaimg.cn/sports/transform/20170406/dHEk-fycxmks5842687.jpg" results = re.findall('"objURL":"(.*?)",', html) # 返回一個列表 # 根據獲取到的圖片連結,把圖片儲存到本地 save_to_txt(results, name, i)</pre>
2.儲存圖片到原生代碼:
# 儲存圖片到本地 j = 0 # 在當目錄下建立資料夾 if not os.path.exists('./' + name): os.makedirs('./' + name) # 下載圖片 for result in results: print('正在儲存第{}個'.format(j)) try: pic = requests.get(result, timeout=10) time.sleep(1) except: print('當前圖片無法下載') j += 1 continue # 可忽略,這段程式碼有bug # file_name = result.split('/') # file_name = file_name[len(file_name) - 1] # print(file_name) # # end = re.search('(.png|.jpg|.jpeg|.gif)/pre>, file_name) # if end == None: # file_name = file_name + '.jpg' # 把圖片儲存到資料夾 file_full_name = './' + name + '/' + str(i) + '-' + str(j) + '.jpg' with open(file_full_name, 'wb') as f: f.write(pic.content) j += 1
核心程式碼:
pic = requests.get(result, timeout=10)
f.write(pic.content)
3.主函式程式碼:
# 主函式
if __name__ == '__main__':
name = input('請輸入你要下載的關鍵詞:')
pn = input('你想下載前幾頁(1頁有60張):')
get_parse_page(pn, name)
文章到這裡就結束了,感謝你的觀看,Python實用腳本系列,下篇文章分享天氣查詢應用
為了感謝讀者們,我想把我最近收藏的一些程式設計乾貨分享給大家,回饋每一個讀者,希望能幫到你們。
乾貨主要有:
① 2000多本Python電子書(主流和經典的書籍應該都有了)
② Python標準庫資料(最全中文版)
③ 專案原始碼(四五十個有趣且經典的練手專案及原始碼)
④ Python基礎入門、爬蟲、web開發、大資料分析方面的視訊(適合小白學習)
⑤ Python學習路線圖(告別不入流的學習)
⑥ 兩天的Python爬蟲訓練營直播許可權
All done~詳見個人簡介或者私信獲取完整原始碼。。