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:\爬虫\课件\day03\Spider3\selenium&PhanmJs\chromedriver.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:\爬虫\课件\day03\phantomjs-2.1.1-windows\bin\phantomjs.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()

图片懒加载、selenium和PhantomJS的更多相关文章

  1. 爬虫之 图片懒加载, selenium , phantomJs, 谷歌无头浏览器

    一.图片懒加载 懒加载 :    JS 代码  是页面自然滚动    window.scrollTo(0,document.body.scrollHeight)   (重点) bro.execute_ ...

  2. 08.Python网络爬虫之图片懒加载技术、selenium和PhantomJS

    引入 今日概要 图片懒加载 selenium phantomJs 谷歌无头浏览器 知识点回顾 验证码处理流程 今日详情 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材ht ...

  3. Python网络爬虫之图片懒加载技术、selenium和PhantomJS

    引入 图片懒加载 selenium phantomJs 谷歌无头浏览器 知识点回顾 验证码处理流程 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.ch ...

  4. Python爬虫之图片懒加载技术、selenium和PhantomJS

    一.引入 2.概要 图片懒加载 selenium phantomJs 谷歌无头浏览器 3.回顾 验证码处理流程 一.今日详情 动态数据加载处理 1.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素 ...

  5. 爬虫之图片懒加载技术、selenium和PhantomJS

    爬虫之图片懒加载技术.selenium和PhantomJS   图片懒加载 selenium phantomJs 谷歌无头浏览器 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http:/ ...

  6. 图片懒加载,Selenium,PhantomJS

    引入 今日概要 图片懒加载 selenium phantomJs 谷歌无头浏览器 知识点回顾 验证码处理流程 今日详情 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材ht ...

  7. 爬虫(七)图片懒加载技术、selenium和PhantomJS

    动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding ...

  8. python爬虫之图片懒加载、selenium和phantomJS

    一.什么是图片懒加载 在网页中,常常需要用到图片,而图片需要消耗较大的流量.正常情况下,浏览器会解析整个HTML代码,然后从上到下依次加载<img src="xxx"> ...

  9. 爬虫之图片懒加载技术、selenium工具与PhantomJS无头浏览器

    图片懒加载技术 selenium爬虫简单使用 2.1 selenium简介 2.2 selenium安装 2.3 selenium简单使用 2.3.1 selenium使用案例 2.3.2 selen ...

随机推荐

  1. 前向分步算法 && AdaBoost算法 && 提升树(GBDT)算法 && XGBoost算法

    1. 提升方法 提升(boosting)方法是一种常用的统计学方法,在分类问题中,它通过逐轮不断改变训练样本的权重,学习多个分类器,并将这些分类器进行线性组合,提高分类的性能 0x1: 提升方法的基本 ...

  2. Mac 终端美化方法

    美化终端,主要是主题,字体,命令行提示3个方面. 主题 使用的主题是Solarized Dark主题. 安装主题: git clone git://github.com/altercation/sol ...

  3. C#基于任务的异步模式

    using System; using System.Threading; using System.Threading.Tasks; using static System.Console; //异 ...

  4. jdk生成https证书

    最近由于客户现场做“等保”,其中有一条要求我们必须使用https进行web端的请求,之前我们一直沿用的是默认的http请求,用户说不安全,唉~~局域网,一直强调安全,安全,话不多说了 我采用的使用JA ...

  5. 一篇文让你看懂NB-IoT、LoRa、eMTC、Sigfox及ZigBee的应用场景【转】

    转自:https://blog.csdn.net/nicholas_dlut/article/details/81051269

  6. Saltstack自动化操作记录(2)-配置使用

    之前梳理了Saltstack自动化操作记录(1)-环境部署,下面说说saltstack配置及模块使用: 为了试验效果,再追加一台被控制端minion机器192.168.1.118需要在master控制 ...

  7. sql server的sysobjects表中xtype字段值的含义

    xtype字段包含的值的意思如下: AF = Aggregate function (CLR) 聚合函数(CLR)  C = CHECK constraint CHECK约束  D = Default ...

  8. EF优化之启动预热

    为什么Entity Framework的初始化速度慢如蜗牛呢? 对于在应用程序中定义的每个DbContext类型,在首次使用时,Entity Framework都会根据数据库中的信息在内存生成一个映射 ...

  9. Vue+SpringBoot+Mybatis的简单员工管理项目

    本文项目参考自:https://github.com/boylegu/SpringBoot-vue 为了完成此项目你需要会springBoot,mybatis的一些基本操作 运行界面 第一步:搭建前端 ...

  10. 图文详解互联网根基之HTTP

    这是本人对<图解HTTP>和<HTTP权威指南>阅读后总结的大家常用的.重要的知识点,前端.后端同学居家必备! 一.概述 HTTP是Hyper Text Transfer Pr ...