Python爬虫之Selenium下拉框处理的实现


Posted in Python onDecember 04, 2020

在我们浏览网页的时候经常会碰到下拉框,WebDriver提供了Select类来处理下拉框,详情请往下看:

本章中用到的关键方法如下:

  • select_by_value():设置下拉框的值
  • switch_to.alert.accept():定位并接受现有警告框(详情请参考Python爬虫 - Selenium(9)警告框(弹窗)处理)
  • click():鼠标点击事件(其他鼠标事件请参考Python爬虫 - Selenium(5)鼠标事件)
  • move_to_element():鼠标悬停(详情请参考Python爬虫 - Selenium(5)鼠标事件)
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.support.select import Select
import time
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')

# 鼠标悬停至“设置”链接
link = driver.find_element_by_link_text('设置')
ActionChains(driver).move_to_element(link).perform()
time.sleep(2) #睡两秒,看一下效果

# 打开搜索设置
driver.find_element_by_link_text("搜索设置").click()
time.sleep(2) #睡两秒,看一下效果

# 搜索结果显示条数
sel = driver.find_element_by_xpath("//select[@id='nr']")
Select(sel).select_by_value('50') # 显示50条
time.sleep(2) #睡两秒,看一下效果

# 保存设置
driver.find_element_by_class_name("prefpanelgo").click()
time.sleep(2) #睡两秒,看一下效果

# 定位并接受现有警告框
alert = driver.switch_to.alert.accept()
time.sleep(2) #睡两秒,看一下效果

driver.quit()

select类中的函数列表

函数 解析
options 返回select元素所有的options
all_selected_options 返回select元素中所有已选中的选项
first_selected_option 返回select元素中选中的第一个选项
select_by_index(index) 通过索引定位,index索引是从“0”开始
select_by_value(value) 通过value属性值定位
select_by_visible_text(text)t 通过文本值定位,visible_text是在option标签中间的值,即显示在下拉框的值;
deselect_all() 取消全部的已选择项
deselect_by_index(index) 取消已选中的索引项
deselect_by_value(value) 取消已选中的value值
deselect_by_visible_text(text) 取消已选中的文本值

举例

html如下:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>我是标题</title>
</head>
<body>
<!--select标签-->
<select name="city" size="5" multiple="multiple">
 <option value="1" tabindex="1">北京</option>
 <option value="2" tabindex="2" selected="selected">河南</option>
 <option value="3" tabindex="3">河北</option>
 <option value="4" tabindex="4">山东</option>
 <option value="5" tabindex="5">上海</option>
</select>

</body>
</html>

Python爬虫之Selenium下拉框处理的实现

from selenium import webdriver
from selenium.webdriver.support.select import Select
import time

driver = webdriver.Chrome(r"D:\browser\chromedriver\chromedriver.exe")
driver.get("http://localhost:63342/ui_test/select%E6%A0%87%E7%AD%BE.html")

driver.maximize_window()

ele = driver.find_element_by_name("city")
select = Select(ele)
select.select_by_value("3") # 选中"河北"
time.sleep(3)
select.select_by_index(0) # 选中"北京"
time.sleep(3)
select.deselect_by_value("3") # 取消选中"河北"
time.sleep(3)
select.deselect_by_index(0) # 取消选中"北京"
time.sleep(3)
driver.quit()

Selenium文集传送门:

标题 简介
Python爬虫 - Selenium(1)安装和简单使用 详细介绍Selenium的依赖环境在Windows和Centos7上的安装及简单使用
Python爬虫 - Selenium(2)元素定位和WebDriver常用方法 详细介绍定位元素的8种方式并配合点击和输入、提交、获取断言信息等方法的使用
Python爬虫 - Selenium(3)控制浏览器的常用方法 详细介绍自定义浏览器窗口大小或全屏、控制浏览器后退、前进、刷新浏览器等方法的使用
Python爬虫 - Selenium(4)配置启动项参数 详细介绍Selenium启动项参数的配置,其中包括无界面模式、浏览器窗口大小设置、浏览器User-Agent (请求头)等等
Python爬虫 - Selenium(5)鼠标事件 详细介绍鼠标右击、双击、拖动、鼠标悬停等方法的使用
Python爬虫 - Selenium(6)键盘事件 详细介绍键盘的操作,几乎包含所有常用按键以及组合键
Python爬虫 - Selenium(7)多窗口切换 详细介绍Selenium是如何实现在不同的窗口之间自由切换
Python爬虫 - Selenium(8)frame/iframe表单嵌套页面 详细介绍如何从当前定位的主体切换为frame/iframe表单的内嵌页面中
Python爬虫 - Selenium(9)警告框(弹窗)处理 详细介绍如何定位并处理多类警告弹窗
Python爬虫 - Selenium(10)下拉框处理 详细介绍如何灵活的定位并处理下拉框
Python爬虫 - Selenium(11)文件上传 详细介绍如何优雅的通过send_keys()指定文件进行上传
Python爬虫 - Selenium(12)获取登录Cookies,并添加Cookies自动登录 详细介绍如何获取Cookies和使用Cookies进行自动登录
Python爬虫 - Selenium(13)设置元素等待 详细介绍如何优雅的设置元素等待时间,防止程序运行过快而导致元素定位失败
Python爬虫 - Selenium(14)窗口截图 详细介绍如何使用窗口截图
Python爬虫 - Selenium(15)关闭浏览器 详细介绍两种关闭窗口的区别

到此这篇关于Python爬虫之Selenium下拉框处理的实现的文章就介绍到这了,更多相关Selenium 下拉框内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
Python中index()和seek()的用法(详解)
Apr 27 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
Nov 01 Python
Python中装饰器高级用法详解
Dec 25 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
Python 加密与解密小结
Dec 06 Python
python3使用QQ邮箱发送邮件
May 20 Python
使用Python制作简单的小程序IP查看器功能
Apr 16 Python
python模块导入的方法
Oct 24 Python
解决pandas展示数据输出时列名不能对齐的问题
Nov 18 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
Ubuntu20.04环境安装tensorflow2的方法步骤
Jan 29 Python
Python爬虫之Selenium警告框(弹窗)处理
Dec 04 #Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 #Python
Python爬虫之Selenium多窗口切换的实现
Dec 04 #Python
Python爬虫之Selenium实现键盘事件
Dec 04 #Python
python 爬虫请求模块requests详解
Dec 04 #Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 #Python
Selenium 配置启动项参数的方法
Dec 04 #Python
You might like
Yii实现显示静态页的方法
2016/04/25 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
javascript hashtable 修正版 下载
2010/12/30 Javascript
解析JSON对象与字符串之间的相互转换
2013/12/18 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
jQuery实现的购物车物品数量加减功能代码
2016/11/16 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
vue给input file绑定函数获取当前上传的对象完美实现方法
2017/12/15 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
vue中使用v-model完成组件间的通信
2019/08/22 Javascript
javascript 模块依赖管理的本质深入详解
2020/04/30 Javascript
Python实现把xml或xsl转换为html格式
2015/04/08 Python
Python基于ThreadingTCPServer创建多线程代理的方法示例
2018/01/11 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
Python制作简易版小工具之计算天数的实现思路
2020/02/13 Python
使用卷积神经网络(CNN)做人脸识别的示例代码
2020/03/27 Python
Python中的面向接口编程示例详解
2021/01/17 Python
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
教师自荐信
2013/12/10 职场文书
男方父母证婚词
2014/01/12 职场文书
手工社团活动方案
2014/02/17 职场文书
销售助理岗位职责
2014/02/21 职场文书
大学生村官承诺书
2014/03/28 职场文书
学校工作推荐信范文
2014/07/11 职场文书
2014统计局民主生活会对照检查材料思想汇报
2014/10/02 职场文书
特此通知格式
2015/04/27 职场文书
社区敬老月活动总结
2015/05/07 职场文书
大学生受助感言
2015/08/01 职场文书
小学音乐课歌曲《堆雪人》教学反思
2016/02/18 职场文书
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python