爬虫小案例:基于Bing关键词批量下载图片
生活随笔
收集整理的這篇文章主要介紹了
爬虫小案例:基于Bing关键词批量下载图片
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一、需求:
基于Bing網(wǎng)站,輸入關(guān)鍵詞,批量下載圖片保存到本地
二、演示:
三、直接上代碼
import os import urllib.request import urllib.parse from bs4 import BeautifulSoup import re import time# 設(shè)置請(qǐng)求頭 header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 UBrowser/6.1.2107.204 Safari/537.36' }# 網(wǎng)址信息 url = "https://cn.bing.com/images/async?q={0}&first={1}&count={2}&scenario=ImageBasicHover&datsrc=N_I&layout=ColumnBased&mmasync=1&dgState=c*9_y*2226s2180s2072s2043s2292s2295s2079s2203s2094_i*71_w*198&IG=0D6AD6CBAF43430EA716510A4754C951&SFX={3}&iid=images.5599"# 需要爬取的圖片關(guān)鍵詞 name = "深咖網(wǎng)瓷磚"# 本地存儲(chǔ)路徑 path = "D:\\" + namedef getStartHtml(url, key, first, loadNum, sfx):"""獲取縮略圖列表頁"""page = urllib.request.Request(url.format(key, first, loadNum, sfx),headers=header)html = urllib.request.urlopen(page)return htmldef findImgUrlFromHtml(html, rule, count):"""從縮略圖列表頁中找到原圖的url,并返回這一頁的圖片數(shù)量"""soup = BeautifulSoup(html, "lxml")link_list = soup.find_all("a", class_="iusc")for link in link_list:result = re.search(rule, str(link))if result:# 將字符串"amp;"刪除url = result.group(0)# 組裝完整urlurl = url[8:len(url)]# 打開高清圖片網(wǎng)址getImage(url, count)count += 1else:continue# 完成一頁,繼續(xù)加載下一頁return countdef getImage(url, count):"""從原圖url中將原圖保存到本地"""try:time.sleep(0.5)urllib.request.urlretrieve(url, path + '\\' + str(count + 1) + '.jpg')except Exception:time.sleep(1)print("產(chǎn)生了一點(diǎn)點(diǎn)錯(cuò)誤,跳過...")else:print("圖片+1,成功保存 " + str(count + 1) + " 張圖")def main():key = urllib.parse.quote(name)first = 1loadNum = 35sfx = 1count = 0# 正則表達(dá)式rule = re.compile(r"\"murl\"\:\"http\S[^\"]+")# 圖片保存路徑if not os.path.exists(path):os.makedirs(path)# 最多抓500張while count < 500:html = getStartHtml(url, key, first, loadNum, sfx)count += findImgUrlFromHtml(html, rule, count)first = count + 1sfx += 1if __name__ == '__main__':main()四、結(jié)果
?
總結(jié)
以上是生活随笔為你收集整理的爬虫小案例:基于Bing关键词批量下载图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的生产者与消费者模式
- 下一篇: Javascript复习题