不多說直接上代碼
首先需要安裝需要的庫,安裝命令如下
pip install BeautifulSoup
pip install requests
pip install urllib
pip install lxmlfrom bs4 import BeautifulSoup # 貴族名寵網頁爬蟲
import requests import urllib.request # 網址 url = 'http://www.hengdadog.com/sale-1.html' def allpage(): # 獲得所有網頁 all_url = [] for i in range(1, 8): #循環翻頁次數 each_url = url.replace(url[-6], str(i)) # 替換 all_url.append(each_url) return (all_url) # 返回地址列表 if __name__ == '__main__': img_url = allpage() # 調用函數 for url in img_url: # 獲得網頁源代碼 print(url) requ = requests.get(url) req = requ.text.encode(requ.encoding).decode() html = BeautifulSoup(req, 'lxml') t = 0 # 選擇目標url img_urls = html.find_all('img') for k in img_urls: img = k.get('src') # 圖片 print(img) name = str(k.get('alt')) # 名字,這里的強制類型轉換很重要 type(name) # 先本地新建一下文件夾,保存圖片並且命名 path = 'F:\\CAT\\' # 路徑 file_name = path + name + '.jpg' imgs = requests.get(img) # 存儲入文件 try: urllib.request.urlretrieve(img, file_name) # 打開圖片地址,下載圖片保存在本
except: print("error")
運行效果:
上面代碼有不少缺陷,比如需要手動創建目錄以及判斷目錄是否存在,下載沒有提示,於是做了些優化:
from bs4 import BeautifulSoup # 貴族名寵網頁爬蟲 import requests import urllib.request import os # 網址 url = 'http://www.hengdadog.com/sale-1.html' if os.path.exists('F:\\CAT'):#判斷目錄是否存在,存在則跳過,不存在則創建 pass else: os.mkdir('F:\\CAT') def allpage(): # 獲得所有網頁 all_url = [] for i in range(1, 10): #循環翻頁次數 each_url = url.replace(url[-6], str(i)) # 替換 all_url.append(each_url) return (all_url) # 返回地址列表 if __name__ == '__main__': img_url = allpage() # 調用函數 for url in img_url: # 獲得網頁源代碼 print(url) requ = requests.get(url) req = requ.text.encode(requ.encoding).decode() html = BeautifulSoup(req, 'lxml') t = 0 # 選擇目標url img_urls = html.find_all('img') for k in img_urls: img = k.get('src') # 圖片 print(img) name = str(k.get('alt')) # 名字,這里的強制類型轉換很重要 type(name) # 保存圖片並且命名 path = 'F:\\CAT\\' # 路徑 file_name = path + name + '.jpg' imgs = requests.get(img) # 存儲入文件 try: urllib.request.urlretrieve(img, file_name) # 打開圖片地址,下載圖片保存在本地, print('正在下載圖片到F:\CAT目錄······') except: print("error")
打包成EXE文件:
進入文件目錄輸入如下命令
pyinstaller -F get_cat.py