學完Requests庫與Beautifulsoup庫我們今天來實戰一波,爬取網頁圖片。依照現在所學只能爬取圖片在html頁面的而不能爬取由JavaScript生成的圖。所以我找了這個網站http://www.ivsky.com 網站裡面有很多的圖集,我們就找你的名字這個圖集來爬取 http://ww ...
學完Requests庫與Beautifulsoup庫我們今天來實戰一波,爬取網頁圖片。依照現在所學只能爬取圖片在html頁面的而不能爬取由JavaScript生成的圖。
所以我找了這個網站http://www.ivsky.com
網站裡面有很多的圖集,我們就找你的名字這個圖集來爬取
http://www.ivsky.com/bizhi/yourname_v39947/ 來看看這個頁面的源代碼:
可以看到我們想抓取的圖片信息在<li> 裡面然後圖片地址在img裡面那麼我們這裡可以用BeautifulSoup庫方法來解析網頁並抓取圖片信息。
soup =BeautifulSoup(html,'html.parser') all_img=soup.find_all('img') for img in all_img: src=img['src']
url方面我們用requests庫去獲取:
def getHtmlurl(url): #獲取網址 try: r=requests.get(url) r.raise_for_status() r.encoding=r.apparent_encoding return r.text except: return ""
我們要將圖片下載下來並存在本地:
try: #創建或判斷路徑圖片是否存在並下載 if not os.path.exists(root): os.mkdir(root) if not os.path.exists(path): r = requests.get(img_url) with open(path, 'wb') as f: f.write(r.content) f.close() print("文件保存成功") else: print("文件已存在") except: print("爬取失敗")
整個爬蟲的框架與思路:
import requests from bs4 import BeautifulSoup import os def getHtmlurl(url): #獲取網址 pass def getpic(html): #獲取圖片地址並下載 pass def main(): 主函數 pass
這裡給出完整代碼
import requests from bs4 import BeautifulSoup import os def getHtmlurl(url): #獲取網址 try: r=requests.get(url) r.raise_for_status() r.encoding=r.apparent_encoding return r.text except: return "" def getpic(html): #獲取圖片地址並下載 soup =BeautifulSoup(html,'html.parser') all_img=soup.find_all('img') for img in all_img: src=img['src'] img_url=src print (img_url) root='D:/pic/' path = root + img_url.split('/')[-1] try: #創建或判斷路徑圖片是否存在並下載 if not os.path.exists(root): os.mkdir(root) if not os.path.exists(path): r = requests.get(img_url) with open(path, 'wb') as f: f.write(r.content) f.close() print("文件保存成功") else: print("文件已存在") except: print("爬取失敗") def main(): url='http://www.ivsky.com/bizhi/yourname_v39947/' html=(getHtmlurl(url)) print(getpic(html)) main()
運行代碼: