Selenium 处理滚动条selenium并不是万能的,有时候页面上操作无法实现的,这时候就需要借助JS来完成了

当页面上的元素超过一屏后,想操作屏幕下方的元素,是不能直接定位到,会报元素不可见的。这时候需要借助滚动条来拖动屏幕,使被操作的元素显示在当前的屏幕上。滚动条是无法直接用定位工具来定位的。selenium里面也没有直接的方法去控制滚动条,这时候只能借助J了,还好selenium提供了一个操作js的方法:execute_script(),可以直接执行js的脚本

一. 控制滚动条高度

1.1滚动条回到顶部:

js="var q=document.getElementById('id').scrollTop=0"

driver.execute_script(js)

1.2滚动条拉到底部

js="var q=document.documentElement.scrollTop=10000"

driver.execute_script(js)

可以修改scrollTop 的值,来定位右侧滚动条的位置,0是最上面,10000是最底部

以上方法在Firefox和IE浏览器上上是可以的,但是用Chrome浏览器,发现不管用。Chrome浏览器解决办法:

js = "var q=document.body.scrollTop=0"

driver.execute_script(js)

二.横向滚动条

2.1 有时候浏览器页面需要左右滚动(一般屏幕最大化后,左右滚动的情况已经很少见了)

2.2 通过左边控制横向和纵向滚动条scrollTo(x, y)

js = "window.scrollTo(100,400)"

driver.execute_script(js)

三.元素聚焦

虽然用上面的方法可以解决拖动滚动条的位置问题,但是有时候无法确定我需要操作的元素在什么位置,有可能每次打开的页面不一样,元素所在的位置也不一样,怎么办呢?这个时候我们可以先让页面直接跳到元素出现的位置,然后就可以操作了

同样需要借助JS去实现。 具体如下:

target = driver.find_element_by_xxxx()

driver.execute_script("arguments[0].scrollIntoView();", target)

四. 参考代码

from selenium import webdriver

from lxml import etree

import time

url = "https://search.jd.com/Search?keyword=%E7%AC%94%E8%AE%B0%E6%9C%AC&enc=utf-8&wq=%E7%AC%94%E8%AE%B0%E6%9C%AC&pvid=845d019c94f6476ca5c4ffc24df6865a"

# 加载浏览器

wd = webdriver.Firefox()

# 发送请求

wd.get(url)

# 要执行的js

js = "var q = document.documentElement.scrollTop=10000"

# 执行js

wd.execute_script(js)

time.sleep(3)

# 解析数据

e = etree.HTML(wd.page_source)

# 提取数据的xpath

price_xpath = '//ul[@class="gl-warp clearfix"]//div[@class="p-price"]/strong/i/text()'

# 提取数据的

infos = e.xpath(price_xpath)

print(len(infos))

# 关闭浏览器

wd.quit()

python滚动条翻页爬取数据_Python网络爬虫之Selenium 处理滚动条【第十四节】相关推荐

  1. Python自动翻页爬取网页名称、评论等信息实例

    一.已知评论页数,自动翻页爬取 import requests from bs4 import BeautifulSouppage = int(input('请输入评论总页数:'))+1 #整型 fo ...

  2. Python爬虫实战(一):翻页爬取数据存入SqlServer

    目录 前言 爬取目标 准备工作 代码分析 1. 设置翻页 2. 获取代理ip 3. 发送请求 4. 获取详情页地址 5. 提取详情信息 6. 存入数据库 7. 循环实现翻页 8. 启动 前言

  3. python自动登录网站爬取数据_Python爬虫实战:自动化登录网站,爬取商品数据

    前言 随着互联网时代的到来,人们更加倾向于互联网购物.某东又是电商行业的巨头,在某东平台中有很多商家数据.今天带大家使用python+selenium工具获取这些公开的商家数据 适合阅读人群:sele ...

  4. python网络爬虫爬取视频_Python网络爬虫——爬取小视频网站源视频!自己偷偷看哦!...

    学习前提1.了解python基础语法 2.了解re.selenium.BeautifulSoup.os.requests等python第三方库 1.引入库 爬取网站视频需要引入的第三方库: impor ...

  5. python从入门到放弃篇26(lxml.etree库,urllib.request库,构造xpath路径,构造url)实现翻页爬取豆瓣书简介并保存数据

    今天,我研究了构造url和xpath路径的方法实现翻页爬取数据.觉得还可以,不过还是存在一些问题,没有我想的那么理想,因为,目前只实现了爬取每一页的第一本书及其书评.我等有时间会再去研究. 第一步,我 ...

  6. [Python Scrapy爬虫] 二.翻页爬取农产品信息并保存本地

    前面 "Python爬虫之Selenium+Phantomjs+CasperJS" 介绍了很多Selenium基于自动测试的Python爬虫程序,主要利用它的xpath语句,通过分 ...

  7. python翻页爬取电影天堂网电影的磁力链接

    python翻页爬取电影天堂网电影的磁力链接 案例目的: 介绍如何通过首页的url提取详情页的url以及如何通过xpath语法提取详情页的数据. 代码功能: 输入要爬取的页数,自动保存电影的名称以及对 ...

  8. python翻页爬取京东商品评价

    python翻页爬取京东商品评价 以小米手机评论为案例 1.找到目标的url 2.检查响应结果 3.解析json数据,发现相应数据无法成功解析 注意:json数据一般都是以大括号或中括号开头或者结尾的 ...

  9. python定时爬取数据_python实现scrapy爬虫每天定时抓取数据的示例代码

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

最新文章

  1. SQL SERVER中带参数的返回
  2. junit 测试似有方法_Spring整合Junit的使用
  3. php mysql删除失败_php mysql删除的代码哪里出错了?
  4. springboot自动配置的原理_SpringBoot实战:详解SpringBoot自动配置原理
  5. springmvc为什么不能拦截jsp页面?
  6. 大数据_Hbase-API访问_Java操作Hbase_封装操作数据的工具类---Hbase工作笔记0015
  7. Mysql大量插入随机数据方法--存储过程
  8. Redis分布式锁方案
  9. springboot(五) 加载配置文件优先级顺序
  10. iPhone白苹果、卡在系统升级界面
  11. 从逻辑功能上看 可以把计算机网络分成,从逻辑功能上看,可以把计算机网络分成通信子网和资源子网。...
  12. Go语言基础:结构体
  13. 数据库课程设计——学生信息管理系统C#,SQL Sever
  14. 四字母net域名值钱吗?四字母域名取名有什么技巧?
  15. h5禁用浏览器下载视频_【HTML5】video 标签禁用自带的下载按钮
  16. 线程池监控和动态配置
  17. 一分钟了解“查看一台windows电脑是否成功安装了CUDA”
  18. 2.8.1利用“直流扫描分析”测试基本共射放大电路电压传输特性
  19. 圣天诺 LDK - SL (高强度许可证授权产品)
  20. 微信惊现超级大Bug:试过的人都哭了...

热门文章

  1. Windows编程基础(转)
  2. 【拍摄日志一】剧本创作
  3. PVNet: Pixel-wise Voting Network for 6DoF Pose Estimation剩余部分
  4. python画条形统计图_python基础绘图-统计图
  5. 信朋友圈居然还有这波神操作?不仅可以编辑图片,而且还能剪辑视频
  6. Null 与 Undefined数据类型
  7. easy-boot企业级快速开发脚手架
  8. 陕西互联网大会9月举行,聚焦新互联时代陕西机遇
  9. 资料搜集-JAVA系统的梳理知识6-JAVA多线程
  10. 第十二届国际汉字书法教育研讨会(邓老师部分)笔记