• 图片懒加载、selenium和PhantomJS


    1、图片懒加载

    1.1 概念及实现原理

    • 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完, 将大大增加页面的首屏加载时间。为了解决这种问题,通过前后端配合,使图片仅在浏览器当前视窗内出现时才加载该图片,达到减少首屏图片请求数的技术就被称为“图片懒加载
    • 在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载

    1.2 站长素材案例

    import requests
    from lxml import etree
    
    url = 'http://sc.chinaz.com/tupian/dadanrenti.html'
    headers = {
     'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',
    }
    #获取页面文本数据
    response = requests.get(url=url,headers=headers)
    response.encoding = 'utf-8'
    page_text=response.text
    terr=etree.HTML(page_text)
    # 解析文本数据
    div_list=terr.xpath('//*[@id="container"]/div')
    
    for div in div_list:
        # 正常加载的图片标签是src,懒加载标签为src2
        img_url=div.xpath('./div/a/img/@src2')
        img_name=div.xpath('./p/a/text()')
        print(img_url)
        print(img_name)
    

    2. selenium

    2.1 定义及安装

    • 是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作
    • 安装:
    1、pip install selenium
    2、获取某一款浏览器的驱动程序(以谷歌浏览器为例) 
        2.1 谷歌浏览器驱动下载地址:http://chromedriver.storage.googleapis.com/index.html
        2.2 下载的驱动程序必须和浏览器的版本统一,大家可以根据http://blog.csdn.net/huilan_same/article/details/51896672
        中提供的版本映射表进行对应
    

    2.2 代码

    from selenium import webdriver
    from time import sleep
    # 指定驱动路径
    bro = webdriver.Chrome(r'F:爬虫课件day03Spider3selenium&PhanmJschromedriver.exe')
    #打开浏览器发起请求
    bro.get('https://www.baidu.com')
    
    sleep(2)
    #定位到搜索框
    my_text = bro.find_element_by_id('kw')
    #向搜索框中输入一个关键字
    my_text.send_keys('人民币')
    sleep(2)
    
    #定位到搜索按钮
    my_button = bro.find_element_by_id('su')
    my_button.click()
    sleep(5)
    #关闭浏览器
    bro.quit()
    

    3. PhantomJS

    3.1 定义

    • PhantomJS是一款无界面的浏览器,其自动化操作流程和上述操作谷歌浏览器是一致的。由于是无界面的,为了能够展示自动化操作流程,PhantomJS为用户提供了一个截屏的功能,使用save_screenshot函数实现

    3.2 代码

    from selenium import webdriver
    from time import sleep
    
    bro = webdriver.PhantomJS(r'F:爬虫课件day03phantomjs-2.1.1-windowsinphantomjs.exe')
    
    #打开浏览器发起请求
    bro.get('https://www.baidu.com')
    bro.save_screenshot('./首页.jpg')#用来截屏
    sleep(2)
    
    #定位到搜索框
    my_text = bro.find_element_by_id('kw')
    #向搜索框中输入一个关键字
    my_text.send_keys('人民币')
    bro.save_screenshot('./ggg.jpg') # 指定保存的路径
    sleep(2)
    
    #定位到搜索按钮
    my_button = bro.find_element_by_id('su')
    my_button.click()
    
    sleep(5)
    bro.save_screenshot('./33.jpg')
    #关闭浏览器
    bro.quit()
  • 相关阅读:
    PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
    TP5安装workerman版本的坑
    下载git2.2.1并将git添加到环境变量中
    RedHat安装git报错 expected specifier-qualifier-list before ‘z_stream’
    Git出现fatal: Unable to find remote helper for 'https'
    ThinkPHP5实现定时任务
    php一行代码获取本周一,本周日,上周一,上周日,本月一日,本月最后一日,上月一日,上月最后一日日期
    git 查看日志记录
    程序员必读之软件架构 读书笔记
    centos7 安装桌面
  • 原文地址:https://www.cnblogs.com/quqinchao/p/9794609.html
Copyright © 2020-2023  润新知