码迷,mamicode.com
首页 > Web开发 > 详细

【应对网页图片懒加载】 𸥏

时间:2019-08-27 12:31:20      阅读:83      评论:0      收藏:0      [点我收藏+]

标签:eve   executor   htm   pool   als   html   ref   时间   xpath   

原文: http://blog.gqylpy.com/gqy/358

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

网站一般如何实现图片懒加载技术呢?
???????在网页源码中,在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))

原文: http://blog.gqylpy.com/gqy/358

【应对网页图片懒加载】 𸥏

标签:eve   executor   htm   pool   als   html   ref   时间   xpath   

原文地址:https://www.cnblogs.com/ggg566/p/11417375.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!