一、什么是懒加载技术?
用到的时候再加载,比如查看某个网站的图片,可视区内只能看到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)