【网页图片懒加载】

版权声明:本文为博主原创文章,各路大佬可放心转载。 https://blog.csdn.net/qq_41964425/article/details/86087250

图片懒加载概念
       图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将会大大增加页面的首屏加载时间。为了解决这个问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏请求数的技术就被成为“图片懒加载”。

网站一般如何实现图片懒加载技术呢?
       在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original…)来存放真正的图片链接,而并非存放在src属性中。当图片出现到页面的可视化区域中时,会动态将伪属性替换成src属性,完成图片的加载。

实例:Python爬虫抓取站长素材网中的图片
伪属性

import os
import requests
from lxml import etree
import urllib.request
from fake_useragent import UserAgent as ua
from concurrent.futures import ThreadPoolExecutor

# 站长素材网
url = 'http://sc.chinaz.com/tupian/gudianmeinvtupian.html'

headers = {
    'User-Agent': ua(use_cache_server=False).random
}

# 获取页面文本数据
response = requests.get(url, headers=headers)
response.encoding = 'utf-8'
page_text = response.text

# 获取所有存放图片的div
tree = etree.HTML(page_text)
div_list = tree.xpath('//div[@id="container"]/div')

# 开始获取图片信息
img_info = {}
for div in div_list:
    img_name = div.xpath('.//img/@alt')[0]
    img_url = div.xpath('.//img/@src2')[0]
    # 因为 图片懒加载技术 的存在, 所以这里一定要写成 src2。否则你获取不到图片url
    # .// 表示从当前的标签开始查找

    print(img_url, img_name)
    img_info.setdefault(img_name, img_url)

# 我就保存图片
dirname = '古装美女'
os.mkdir(dirname)
t = ThreadPoolExecutor((os.cpu_count() or 1) * 5)
for name, url in img_info.items():
    file_path = os.path.join(dirname, f'{name}.jpg')
    t.submit(lambda: urllib.request.urlretrieve(url, file_path))

猜你喜欢

转载自blog.csdn.net/qq_41964425/article/details/86087250