一、什么是懶加載技術?
用到的時候再加載,比如查看某個網站的圖片,可視區內只能看到4張圖片,如果需要查看后面的圖片則需要滑動查看。
二、懶加載技術的實現
1、實現方式
<img src2='圖片鏈接'>,即將img標簽的src屬性改為src2,當加載到這個圖片時,才會動態變為src
2、演示說明
(1)如下圖,當前只能看見4張圖片,所以查看第一張圖片代碼時,發現img里面的src2已經變為src了
(2)查看第五張圖的代碼,發現img標簽里面寫的是src2,因為當時還沒加載到第五章圖片,所以還是src2
(3)因此使用python爬取圖片時,如果想要爬取某個頁面的全部圖片時,屬性應該寫為@src2,而不是@src
三、python爬蟲懶加載技術實例
#!/usr/local/bin/python3.7 import urllib.request import urllib.parse from lxml import etree import time import os """ @File : meinv_image.py @Time : 2020/05/19 @Author : Mozili """ def handler_request(url, page): # 請求頭 headers = { 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15' } # 區分是否第一頁 if page ==1: url = url.format('') else: url = url.format(str(page)) # 創建一個請求 req = urllib.request.Request(url=url, headers=headers) # 發送請求,獲取內容 cot = urllib.request.urlopen(req).read().decode() return cot def download_image(tree): # 定位圖片src src_list = tree.xpath("//div[@id='container']/div/div/a/img/@src2") # print(src_list) # print(len(src_list)) # 創建文件夾,保存圖片 dirname = 'Reptile/meinv_images' if not os.path.exists(dirname): os.mkdir(dirname) for img_url in src_list: # 獲取圖片名稱 img_name = os.path.basename(img_url) # 圖片保存路徑 img_path = os.path.join(dirname, img_name) # print(img_name) # 發送請求下載圖片 headers = { 'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15' } request = urllib.request.Request(url=img_url, headers=headers) img = urllib.request.urlopen(request).read() # print(img) with open(img_path, 'wb') as fp: fp.write(img) if __name__ == "__main__": start_page = int(input("請輸入起始頁碼:")) end_page = int(input("請輸入結束頁碼:")) url = 'http://sc.chinaz.com/tupian/xingganmeinvtupian{}.html' for page in range(start_page, end_page+1): # 創建請求 content = handler_request(url, page) # 創建對象 tree = etree.HTML(content) # 下載圖片 download_image(tree) time.sleep(2)