zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    Python代写使用矩阵分解法找到类似的音乐
    (转)语义分析透镜洞察婚庆微博用户行为数据
    (转)虎扑论坛基因探秘:社群用户行为数据洞察
    bzoj 4922: [Lydsy1706月赛]Karp-de-Chant Number 贪心+dp
    bzoj 1110: [POI2007]砝码Odw 贪心
    bzoj 3721: PA2014 Final Bazarek 贪心
    bzoj 2563: 阿狸和桃子的游戏 贪心
    bzoj 3999: [TJOI2015]旅游 LCT
    bzoj 4240: 有趣的家庭菜园 树状数组+贪心
    CF369E Valera and Queries kdtree
  • 原文地址:https://www.cnblogs.com/lxmtx/p/12915822.html
Copyright © 2011-2022 走看看