利用python批量爬取百度任意類別的圖片的實現(xiàn)方法
利用python批量爬取百度任意類別的圖片時:
(1):設(shè)置類別名字。
(2):設(shè)置類別的數(shù)目,即每一類別的的圖片數(shù)量。
(3):編輯一個txt文件,命名為name.txt,在txt文件中輸入類別,此類別即為關(guān)鍵字。并將txt文件與python源代碼放在同一個目錄下。
python源代碼:
# -*- coding: utf-8 -*- """ Created on Sun Sep 13 21:35:34 2020 @author: ydc """ import re import requests from urllib import error from bs4 import BeautifulSoup import os num = 0 numPicture = 0 file = '' List = [] def Find(url, A): global List print('正在檢測圖片總數(shù),請稍等.....') t = 0 i = 1 s = 0 while t < 1000: Url = url + str(t) try: # 這里搞了下 Result = A.get(Url, timeout=7, allow_redirects=False) except BaseException: t = t + 60 continue else: result = Result.text pic_url = re.findall('"objURL":"(.*?)",', result, re.S) # 先利用正則表達(dá)式找到圖片url s += len(pic_url) if len(pic_url) == 0: break else: List.append(pic_url) t = t + 60 return s def recommend(url): Re = [] try: html = requests.get(url, allow_redirects=False) except error.HTTPError as e: return else: html.encoding = 'utf-8' bsObj = BeautifulSoup(html.text, 'html.parser') div = bsObj.find('div', id='topRS') if div is not None: listA = div.findAll('a') for i in listA: if i is not None: Re.append(i.get_text()) return Re def dowmloadPicture(html, keyword): global num # t =0 pic_url = re.findall('"objURL":"(.*?)",', html, re.S) # 先利用正則表達(dá)式找到圖片url print('找到關(guān)鍵詞:' + keyword + '的圖片,即將開始下載圖片...') for each in pic_url: print('正在下載第' + str(num + 1) + '張圖片,圖片地址:' + str(each)) try: if each is not None: pic = requests.get(each, timeout=7) else: continue except BaseException: print('錯誤,當(dāng)前圖片無法下載') continue else: string = file + r'\\' + keyword + '_' + str(num) + '.jpg' fp = open(string, 'wb') fp.write(pic.content) fp.close() num += 1 if num >= numPicture: return if __name__ == '__main__': # 主函數(shù)入口 headers = { 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2', 'Connection': 'keep-alive', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0', 'Upgrade-Insecure-Requests': '1' } A = requests.Session() A.headers = headers ############################### tm = int(input('請輸入每類圖片的下載數(shù)量 ')) numPicture = tm line_list = [] with open('./name.txt', encoding='utf-8') as file: line_list = [k.strip() for k in file.readlines()] # 用 strip()移除末尾的空格 for word in line_list: url = 'https://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + '&pn=' tot = Find(url, A) Recommend = recommend(url) # 記錄相關(guān)推薦 print('經(jīng)過檢測%s類圖片共有%d張' % (word, tot)) file = word + '文件' y = os.path.exists(file) if y == 1: print('該文件已存在,請重新輸入') file = word + '文件夾2' os.mkdir(file) else: os.mkdir(file) t = 0 tmp = url while t < numPicture: try: url = tmp + str(t) # result = requests.get(url, timeout=10) # 這里搞了下 result = A.get(url, timeout=10, allow_redirects=False) print(url) except error.HTTPError as e: print('網(wǎng)絡(luò)錯誤,請調(diào)整網(wǎng)絡(luò)后重試') t = t + 60 else: dowmloadPicture(result.text, word) t = t + 60 # numPicture = numPicture + tm print('當(dāng)前搜索結(jié)束,感謝使用')
到此這篇關(guān)于利用python批量爬取百度任意類別的圖片的實現(xiàn)方法的文章就介紹到這了,更多相關(guān)python批量爬取百度圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于OpenCV實現(xiàn)動態(tài)畫矩形和多邊形并保存坐標(biāo)
這篇文章主要為大家詳細(xì)介紹了如何利用OpenCV實現(xiàn)動態(tài)畫矩形和多邊形并保存坐標(biāo),文中的示例代碼講解詳細(xì),具有一定的參考價值,需要的可以參考一下2023-03-03Python基于textdistance實現(xiàn)計算文本相似度
textdistance是Python的第三方庫,用于計算文本之間的相似度或距離,本文主要為大家詳細(xì)介紹了如何使用textdistance實現(xiàn)計算文本相似度,需要的可以了解下2024-03-03用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機
大家好,本篇文章主要講的是用Python復(fù)現(xiàn)二戰(zhàn)德軍enigma密碼機,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽2022-01-01python 求1-100之間的奇數(shù)或者偶數(shù)之和的實例
今天小編就為大家分享一篇python 求1-100之間的奇數(shù)或者偶數(shù)之和的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python如何優(yōu)雅刪除字符列表空字符及None元素
這篇文章主要介紹了Python如何優(yōu)雅刪除字符列表空字符及None元素,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-06-06