当前位置: 首页 > news >正文

Python-爬虫、自动化(selenium,动态网页翻页,模拟搜索,下拉列表选择、selenium行为链)

selenium是一个Web自动化测试工具,可以直接运行在浏览器上·支持所有主流的浏览器.可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,基础页面截图等。

使用pip install selenium命令下载selenium模块。

运行下列代码:

from selenium import webdriver

driver = webdriver.Chrome()

在这里插入图片描述
说明没有下载对应浏览器的驱动,这里使用谷歌浏览器

注意:
需要根据浏览器版本下载对应插件。
插件下载地址
在这里插入图片描述
在这里插入图片描述
如果没有对应版本,直接选择最近版本的插件下载即可,这里选择.52版本即可
在这里插入图片描述
下载对应平台即可。

下载好后,解压,把可执行程序放到项目同级目录下,或者可以在函数webdriver.Chrome()上传递这个插件路径driver = webdriver.Chrome(executable_path=r"F:\chrome\chromedriver.exe")(可能会因方法弃用爆红字,忽略即可)
在这里插入图片描述
重新运行代码可以发现不报错了。
在这里插入图片描述

文章目录

  • 1. selenium练习
    • 自动搜索
    • 网页下拉框选择测试
    • 动态页面翻页
  • 2. selenium行为链

1. selenium练习

selenium有很多种定位方式,如下表
在这里插入图片描述

自动搜索

import time

from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get("https://www.baidu.com/")

# 通过xpath找百度网页搜索框
search = driver.find_element(By.XPATH, '//*[@id="kw"]')
search.send_keys('笔记本')

time.sleep(5)

# 通过id找搜索按钮
submit = driver.find_element(By.ID, 'su')
submit.click()

time.sleep(5)

driver.close()

在这里插入图片描述


网页下拉框选择测试

网页下拉框:
在这里插入图片描述
在这里插入图片描述

通过导入from selenium.webdriver.support.ui import Select来实现下拉框的选择
从selenium.webdriver.Support.ui导入选择

Select().select_by_index()索引获取
Select().select_by_value() value获取
Select().deselect_by_visible_text()文本获取
import time

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select

driver = webdriver.Chrome()
driver.get("https://kyfw.12306.cn/otn/regist/init")

index = driver.find_element(By.ID, 'cardType')

select = Select(index)

# 通过下标选择,列表是从0号下标开始
select.select_by_index(3)

time.sleep(5)

driver.close()

在这里插入图片描述

动态页面翻页

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get('https://www.duitang.com/search/?kw=%E7%BE%8E%E5%A5%B3&type=feed')

for i in range(1, 200, 5):  # 实现网页下拉
    js = 'window.scrollTo(0,%s)' % (i * 100)
    driver.execute_script(js)
    time.sleep(0.3)

print(driver.page_source)

input()
# 关闭页面
driver.close()

在这里插入图片描述
通过selenium可以直接获取到数据。

2. selenium行为链

为了更好的让selenium模拟人的行为,所以引出了 selenium行为链

这里以搜索行为链为例学习:from selenium.webdriver.common. action_chains import ActionChains导入selenium行为链模块

基本操作为:

action = ActionChains(driver)  # 在driver创建行为链对象
inp = driver.find_element(By.ID, 'kw')  # 获取到输入框位置
action.move_to_element(inp)  # 把鼠标移动到输入框
action.send_keys_to_element(inp, '百度贴吧')  # 模拟输入,函数中自动包括点击搜索框行为

btn = driver.find_element(By.ID, 'su')  # 获取搜索按钮
action.move_to_element(btn)  # 移动鼠标到搜索按钮
action.click(btn)  # 模拟点击
action.perform()  # 执行行为
from selenium.webdriver.common.action_chains import ActionChains
from selenium import webdriver
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")

# 通过xpath找百度网页搜索框
search = driver.find_element(By.XPATH, '//*[@id="kw"]')
# 通过id找搜索按钮
submit = driver.find_element(By.ID, 'su')

action = ActionChains(driver)
action.move_to_element(search)
action.send_keys_to_element(search, 'python')
action.move_to_element(submit)
action.click(submit)
action.perform()

input()

driver.close()

在这里插入图片描述

相关文章:

  • 关联规则代码实现
  • Redis 键(key)相关操作和常用命令
  • 大模型系统和应用——Prompt-learning Delta Tuning
  • Python自动化小技巧07——符号计算求方程解、二重积分
  • js获取本周的周一、周日和上周的周一、周日
  • 基于Php幼儿园管理系统
  • 基于Spring Boot+MySQL的半自动标注系统(人、车、人脸的自动检测)设计与实现
  • 置顶汇总:OpenGL图形学、Shader进阶、Android-RTC视频处理、学术讨论群。
  • SpringBoot项目配置postgresql数据库(配置多数据源)
  • idea分析栈帧链
  • IAR9.30以上版本安装、注册、新建工程和配置过程详细介绍
  • UML测试题(用例图基础b)
  • kvm虚拟机基本管理和网络管理
  • 从零实现深度学习框架——衡量算法的基本指标
  • 【SQL注入】(1)原理,框架
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • 230. Kth Smallest Element in a BST
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • JavaScript-Array类型
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • node-glob通配符
  • node学习系列之简单文件上传
  • Python 反序列化安全问题(二)
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SQL 难点解决:记录的引用
  • Wamp集成环境 添加PHP的新版本
  • 彻底搞懂浏览器Event-loop
  • 从tcpdump抓包看TCP/IP协议
  • 前端之Sass/Scss实战笔记
  • 三分钟教你同步 Visual Studio Code 设置
  • 通过npm或yarn自动生成vue组件
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 想写好前端,先练好内功
  • 新书推荐|Windows黑客编程技术详解
  • zabbix3.2监控linux磁盘IO
  • 积累各种好的链接
  • 交换综合实验一
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​渐进式Web应用PWA的未来
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • $forceUpdate()函数
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (AngularJS)Angular 控制器之间通信初探
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (二十三)Flask之高频面试点
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (四)Android布局类型(线性布局LinearLayout)
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (一)UDP基本编程步骤
  • (译)2019年前端性能优化清单 — 下篇
  • (转)http-server应用