python爬虫之前端懒加载技术介绍与使用

一、什么是懒加载技术?

  用到的时候再加载,比如查看某个网站的图片,可视区内只能看到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)
原文地址:https://www.cnblogs.com/lxmtx/p/12915822.html