• 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)
  • 相关阅读:
    修改CentOS的yum源为国内yum镜像源
    CentOS7利用yum安装node.js
    Ansible系列(一):安装
    动态链接库引起的yum故障
    《C++ Templates: The Complete Guide》读书笔记
    Linux下编译clang、libcxx及其相关库——C++11环境搭建
    shell小工具:findstr 和 findfile
    关于newexpression、new operator、operator delete的总结
    Makefile编写示例:构建一个库
    无计划就不行动!
  • 原文地址:https://www.cnblogs.com/lxmtx/p/12915822.html
Copyright © 2020-2023  润新知