資源簡介 (共21張PPT)Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.少兒編程課王者榮耀圖片爬蟲本節課,我們來爬取網站上面的圖片并保存到電腦中:圖片爬取及保存生活中保存網絡圖片的方法:1首先找到要保存的圖片;2鼠標右鍵保存圖片到指定目錄:少量的圖片還可以這樣操作,那如果是一整頁的圖片呢?很多頁面的圖片呢?1每個圖片的網絡地址就像一根根蛛絲,圖片就是蛛絲上面的小水珠。編碼實現編程實現保存網絡圖片的思路:1首先找到要保存的圖片,獲取圖片地址2保存圖片到本地目錄,并重命名為圖片原名稱編程實現保存本地圖片:1編碼保存圖片到指定目錄:from tkinter import *from PIL import Imagefrom PIL import ImageTkroot = Tk()root.title('標簽上圖片的展示')img = Image.open('C:/Users/Administrator/Desktop/momeimei.jpg')img = ImageTk.PhotoImage(img)label = Label(root, text="", image=img, width=500, height=500)label.grid(row=0, column=0)在之前生成二維碼的課程中,我們使用Image和ImageTkinter來操作圖片嗎?# 將本地的圖片文件保存到其他的目錄中img.save('C:/Users/Administrator/Desktop/momeimei-1.jpg')編程實現保存一個網絡圖片:1拿到圖片網絡地址:http://pic1./wallpaper/2018-11-13/5bea31214169a_270_185.jpg使用Requests獲取網絡圖片import requestsimageUrl = 'http://pic1./wallpaper/2018-11-09/5be4ef509f62a_270_185.jpg'imgRes = requests.get(imageUrl)2圖片屬于二進制文件,Requests 會自動為你解碼 gzip 和 deflate 傳輸編碼的響應數據。例如,以請求返回的二進制數據創建一張圖片,你可以使用如下代碼:import requestsfrom io import BytesIOimg = Image.open(BytesIO(imgRes.content))3使用Image將圖片保存到本地目錄# 將本地的圖片文件保存到其他的目錄中img.save('C:/Users/Administrator/Desktop/momeimei-1.jpg')練習Exercises密封線內不準答題現在知道網絡圖片地址,請使用Image的save()方法將它保存到本地目錄下。使用BeautifulSoup拿到圖片的地址:1現在知道了網頁的地址,每個圖片的地址包含在網頁中,如何拿到圖片的下載地址?BeautifulSoup安裝網絡數據挖掘指的是從網站中獲取數據的過程,數據挖掘技術可以讓我們從網站世界中收集大量有價值的數據。Beautiful Soup是一個Python庫,可以從HTML或XML文件中獲取數據,利用它你可以做很多事情,比如你可以持續解析某個商品的最新價格,以便跟蹤價格的波動情況。1Beautiful Soup簡介2Beautiful Soup安裝# 使用pip安裝pip install beautifulsoup4# 檢驗是否安裝成功from bs4 import BeautifulSoup3Beautiful Soup支持Python標準庫中的HTML解析器,還支持一些第三方的解析器,其中一個是 lxml# lxml是功能最豐富且易于使用的庫,用于處理Python語言中的XML和HTMLpip install lxml# html5lib的解析方式與瀏覽器相同pip install html5libBeautifulSoup使用4創建Beautiful Soup對象from bs4 import BeautifulSouphtml_doc = """The Dormouse's storyThe Dormouse's storyOnce upon a time there were three little sisters; and their names wereElsie,Lacie andTillie;and they lived at the bottom of a well...."""soup = BeautifulSoup(html_doc,features='lxml')print(soup)使用BeautifulSoup解析這段代碼,能夠得到一個 BeautifulSoup 的對象,并能按照標準的縮進格式的結構輸出BeautifulSoup使用5使用find_all()找到指定標簽soup = BeautifulSoup(html_doc,features='lxml')print(soup.fidn_all(‘a’))[Elsie,Lacie,Tillie]輸出結果如下:6使用網頁內容創建BeautifulSoup對象import requestshtmlUrl = 'http://www./zt/wangzherongyao_1.html'soup = BeautifulSoup(requests.get(htmlUrl).text,features='lxml')練習Exercises密封線內不準答題現在知道網頁地址,請使用BeautifulSoup的find_all()方法找到所有圖片地址并打印出來。圖片地址的篩選7使用find_all()找到標簽htmlUrl = 'http://www./zt/wangzherongyao_1.html'soup = BeautifulSoup(requests.get(htmlUrl).text,features='lxml')for url in soup.find_all('img'):print(url).........輸出結果如下:圖片地址的篩選8使用has_attr()過濾標簽# 如果有data-original屬性并且沒有'alt屬性if (child.has_attr('data-original') and not child.has_attr('alt')):輸出結果如下:9獲取標簽數據# 獲取data-original屬性的數據child.['data-original’]http://pic1./wallpaper/2018-11-13/5bea31214169a_270_185.jpg輸出結果如下:完成代碼如下:import requestsfrom PIL import Imagefrom io import BytesIOfrom bs4 import BeautifulSoupimgUrlHead = ‘http://www./zt/wangzherongyao_'imgUrlTail = ‘.html'res = requests.get(url)soup = BeautifulSoup(res.text,features='lxml')def saveImage(url):names = url.split('/')imgName = names[len(names)-1]imgRes = requests.get(url)img = Image.open(BytesIO(imgRes.content))img.save(downloadPath+imgName)for i in range(1,6):tempUrl = '%s%s%s' % (imgUrlHead,i,imgUrlTail)for child in soup.find_all('img'):if (child.has_attr('data-original') and not child.has_attr('alt')):url = child['data-original']saveImage(url)總結Summary網絡請求獲取網絡圖片,并保存到本地目錄√BeautifulSoup的使用√Thanks! 展開更多...... 收起↑ 資源預覽 縮略圖、資源來源于二一教育資源庫