python爬虫实现批量下载百度图片
生活随笔
收集整理的這篇文章主要介紹了
python爬虫实现批量下载百度图片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天和小伙伴們合作一個小項目,需要用到景點圖片作為數據源,在百度上搜索了一些圖片,感覺一個一個手動保存太過麻煩,于是想到用爬蟲來下載圖片。
本次代碼用到了下列一些python模塊,需要預先安裝BeautifulSoup、requests、lxml模塊。
下面直接上源代碼:
import re import requests from urllib import error from bs4 import BeautifulSoup import osnum = 0 numPicture = 0 file = '' List = []def Find(url):global Listprint('正在檢測圖片總數,請稍等.....')t = 0i = 1s = 0while t < 1000:Url = url + str(t)try:Result = requests.get(Url, timeout=7)except BaseException:t = t + 60continueelse:result = Result.textpic_url = re.findall('"objURL":"(.*?)",', result, re.S) # 先利用正則表達式找到圖片urls += len(pic_url)if len(pic_url) == 0:breakelse:List.append(pic_url)t = t + 60return sdef recommend(url):Re = []try:html = requests.get(url)except error.HTTPError as e:returnelse: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 Redef dowmloadPicture(html, keyword):global num# t =0pic_url = re.findall('"objURL":"(.*?)",', html, re.S) # 先利用正則表達式找到圖片urlprint('找到關鍵詞:' + 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:continueexcept BaseException:print('錯誤,當前圖片無法下載')continueelse:string = file + r'\\' + keyword + '_' + str(num) + '.jpg'fp = open(string, 'wb')fp.write(pic.content)fp.close()num += 1if num >= numPicture:returnif __name__ == '__main__': # 主函數入口word = input("請輸入搜索關鍵詞(可以是人名,地名等): ")url = 'http://image.baidu.com/search/flip?tn=baiduimage&ie=utf-8&word=' + word + '&pn='tot = Find(url)Recommend = recommend(url) # 記錄相關推薦print('經過檢測%s類圖片共有%d張' % (word, tot))numPicture = int(input('請輸入想要下載的圖片數量 '))file = input('請建立一個存儲圖片的文件夾,輸入文件夾名稱即可')y = os.path.exists(file)if y == 1:print('該文件已存在,請重新輸入')file = input('請建立一個存儲圖片的文件夾,)輸入文件夾名稱即可')os.mkdir(file)else:os.mkdir(file)t = 0tmp = urlwhile t < numPicture:try:url = tmp + str(t)result = requests.get(url, timeout=10)print(url)except error.HTTPError as e:print('網絡錯誤,請調整網絡后重試')t = t + 60else:dowmloadPicture(result.text, word)t = t + 60print('當前搜索結束,感謝使用')print('猜你喜歡')for re in Recommend:print(re, end=' ')結果展示:
轉自:python爬蟲實現批量下載百度圖片
總結
以上是生活随笔為你收集整理的python爬虫实现批量下载百度图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信小程序 RangeError: We
- 下一篇: 云脉芯联加入龙蜥社区,共建网络“芯”生态