Python爬虫selenium框架基本使用

一、安装导入

使用包管理器安装

pip3 install selenium

二、WebDriver工具

要使用这个工具我们需要保证安装了一个浏览器的驱动器

Python的WebDriver是一个用于自动化Web浏览器操作的工具,它属于Selenium的一部分,特别是Selenium 2.0及以后版本中,WebDriver已经成为了Selenium的主要组件。WebDriver为Web自动化提供了一个简单的接口,允许开发人员和测试人员编写脚本来模拟用户在浏览器中的操作,如点击、输入文本、获取页面数据等。

WebDriver的主要特点包括:

  1. 跨浏览器支持:WebDriver支持多种主流浏览器,如Chrome、Firefox、Edge、Safari和Internet Explorer等,这意味着可以使用相同的API在不同的浏览器上执行自动化测试。

  2. 跨平台支持:WebDriver可以在不同的操作系统上运行,包括Windows、macOS和Linux等,这为用户提供了更大的灵活性和兼容性。

  3. 强大的元素定位:WebDriver提供了多种元素定位方法,如通过ID、名称、XPath、CSS选择器、链接文本等,可以灵活地定位页面上的元素。

  4. 丰富的API:WebDriver提供了丰富的API,包括页面导航、元素操作、窗口操作、等待机制等,可以方便地进行Web自动化操作。

  5. 易于集成:WebDriver可以轻松地与Python等编程语言集成,通过编写脚本来模拟用户的浏览器操作,从而实现自动化测试、数据爬取等任务。

Python的WebDriver提供了丰富的方法来与Web浏览器进行交互,以下是一些常用的WebDriver方法:

元素定位方法

注意:从Selenium 4开始,推荐使用find_element(By.ID, "id")等新的定位方式,其中By是一个枚举类,提供了多种定位策略。

find_element_by_id(id_):通过元素的ID定位。

find_element_by_name(name):通过元素的name属性定位。

find_element_by_xpath(xpath):通过XPath表达式定位。

find_element_by_link_text(link_text):通过链接文本定位。

find_element_by_partial_link_text(partial_link_text):通过部分链接文本定位。

find_element_by_tag_name(tag_name):通过标签名定位。

find_element_by_class_name(class_name):通过类名定位。

find_element_by_css_selector(css_selector):通过CSS选择器定位。

元素操作方法

clear():清除文本字段的内容。

send_keys(*value):模拟按键输入,可以发送一个或多个字符串到当前焦点的元素。

click():单击元素。

submit():提交表单。如果元素是一个表单(或表单内的元素),则提交该表单。

页面操作方法

get(url):加载新的网页。

refresh():刷新当前页面。

back():后退到上一个访问的页面。

forward():前进到下一个访问的页面。

quit():关闭所有浏览器窗口,并结束WebDriver会话。

close():关闭当前窗口。

元素属性与状态

size:返回元素的尺寸,通常是一个包含宽度和高度的字典。

text:获取元素的文本内容。

get_attribute(name):获取元素的属性值,如idnameclass等。

is_displayed():检查元素是否对用户可见,返回TrueFalse

其他方法

page_source:获取当前页面的源代码。

title:获取当前页面的标题。

current_url:获取当前页面的URL。

execute_script(script, *args):在浏览器中执行JavaScript代码。

等待机制

隐式等待(Implicit Wait):通过implicitly_wait(time_to_wait)设置,在查找元素时,如果元素没有立即出现,则等待指定的时间。

显式等待(Explicit Wait):使用WebDriverWait结合expected_conditions来等待某个条件成立,如元素可见、可点击等。

三、案例

from selenium import webdriver#可以操纵浏览器驱动器
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
#加载驱动工具
test_webdriver = webdriver.Chrome(service=Service(r"D:\chromedriver-win64\chromedriver-win64\chromedriver.exe"))
#以get方式发起请求
test_webdriver.get('https://www.网址.com')
#获取当前浏览器的标头
print(test_webdriver.title)
#获取页面元素信息
for item in test_webdriver.find_elements(by=By.XPATH,value="//span[@class='info-wrapper-title-text']"):print(item.text)
time.sleep(10)
#浏览器退出
test_webdriver.quit()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54062.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Kubernetes】常见面试题汇总(四十)

目录 93. Kubelet 与 kubeproxy 作用。Kubeproxy 的三种代理模式和各自的原理以及它们的区别。 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题,即 “ 汇总(一)~(二十二)” 。 题目 69-113 属…

【拥抱AIGC】通义灵码扩展管理

通义灵码提供了扩展管理,支持自定义指令,满足企业编码场景的扩展诉求。 适用版本 企业标准版、企业专属版 通义灵码管理员、组织内全局管理员(专属版)在通义灵码控制台-扩展管理中,进行自定义指令的管理、查看自定义…

Unity2022.3.x各个版本bug集合及推荐稳定版本

最近升级到Unity2022,发现以下问题,仅作参考 2022.3.0f1 - 2022.3.6f1 粒子渲染到RenderTexture闪屏 https://issuetracker.unity3d.com/issues/android-vulkan-visualisation-corruption-occurs-when-rendering-particles-to-render-texture 2022.3.…

嵌入式必懂微控制器选型:STM32、ESP32、AVR与PIC的比较分析

目录 1 微控制器基础概述 1.1 微控制器基本概念 1.2 工作原理及架构 1.3 STM32、ESP32、AVR和PIC简介 2 微控制器性能比较分析 2.1 性能比较 2.2 功耗比较 2.3 功耗分析 2.4 外设接口对比 3 应用场景与选择策略 3.1 物联网应用场景 3.2 工业控制场景 3.3 智能家居场…

not exist 解决一对多 场景 条件过滤问题

场景: 现在存在一对多关系,蓝色的盒子装的篮球,黄的的盒子装的黄球, 黑色的盒子 (模拟工作类似场景) boxIdballId蓝盒ID-15蓝盒ID-16蓝盒ID-17黄盒ID-212黄盒ID-215黄盒ID-216黑盒ID-38黑盒ID-39 需求&a…

leetcode|刷算法 线段树原理以及模板

线段树出现的题目特征 线段树使用的题目。每次操作都要得到返回结果的。 比如 699. 掉落的方块 - 力扣(LeetCode) 2286. 以组为单位订音乐会的门票 - 力扣(LeetCode) 1845. 座位预约管理系统 - 力扣(LeetCode&#…

关于Java中的List<User>如何进行深拷贝

联调中发现了一个很初级&#xff0c;但有容易被忽略的拷贝问题&#xff1a; 错误方式&#xff1a;List<User> us new ArrayList<>(); // name "张三"List<User> us1 new ArrayList<>(us);for (User u : us) {...u.setName("douzi&q…

【PHP陪玩系统源码】游戏陪玩系统app,陪玩小程序优势

陪玩系统开发运营级别陪玩成品搭建 支持二开源码交付&#xff0c;游戏开黑陪玩系统: 多客陪玩系统&#xff0c;游戏开黑陪玩&#xff0c;线下搭子&#xff0c;开黑陪玩系统 前端uniapp后端php&#xff0c;数据库MySQL 1、长时间的陪玩APP源码开发经验&#xff0c;始终坚持从客户…

Docker镜像命令和容器命令

目录 镜像命令 镜像命名规范 镜像操作命令 DockerHub拉取镜像 利用docker save将nginx镜像导出磁盘&#xff0c;然后再通过load加载回来 总结 容器命令介绍和案例 容器相关命令 案例&#xff1a;创建运行一个Nginx容器 总结 镜像命令 镜像命名规范 镜像名称一般分两…

uniapp框架中实现文件选择上传组件,可以选择图片、视频等任意文件并上传到当前绑定的服务空间

前言 uni-file-picker是uniapp中的一个文件选择器组件,用于选择本地文件并返回选择的文件路径或文件信息。该组件支持选择单个文件或多个文件,可以设置文件的类型、大小限制,并且可以进行文件预览。 提示:以下是本篇文章正文内容,下面案例可供参考 uni-file-picker组件具…

了解华为计算产品线,昇腾的业务都有哪些?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 随着 ChatGPT 的现象级爆红&#xff0c;它引领了 AI 大模型时代的深刻变革&#xff0c;进而造成 AI 算力资源日益紧缺。与此同时&#xff0c;中美贸易战的持续也使得 AI 算力国产化适配成为必然趋势。 …

【网站架构部署与优化】LVS负载均衡群集

文章目录 LVS负载均衡群集群集与分布式一、群集&#xff08;集群、Cluster&#xff09;群集的类型 二、分布式三、总结 LVS负载均衡的三种模式一、NAT 地址转换模式二、TUN IP隧道模式三、DR 直接路由模式LVS负载均衡的算法 部署实例LVS-NAT模式部署实例一、环境准备二、部署NF…

Temporal Dynamic Quantization for Diffusion Models阅读

文章目录 AbstractIntroductionBackgrounds and Related Works2.1 扩散模型2.2 量化2.3 量化感知训练和训练后量化 TemporalDynamic Quantization3.1 量化方法3.2 扩散模型量化的挑战3.3 TDQ模块的实现3.4 工程细节时间步的频率编码TDQ模块的初始化 Experimental SetupResults5…

基于SpringBoot+Vue+MySQL的美食信息推荐系统

系统展示 用户前台界面 管理员后台界面 系统背景 在数字化时代&#xff0c;随着人们对美食文化的热爱与追求不断增长&#xff0c;美食信息推荐系统成为了连接食客与美食之间的重要桥梁。面对海量的美食信息&#xff0c;用户往往难以快速找到符合个人口味和需求的美食。因此&…

实用工具推荐---- PDF 转换

直接上链接&#xff1a;爱PDF |面向 PDF 爱好者的在线 PDF 工具 (ilovepdf.com) 主要功能如下&#xff1a; 全免费&#xff01;&#xff01;&#xff01;&#xff01;

FPGA远程烧录bit流

FPGA远程烧录bit流 Vivado支持远程编译并下载bit流到本地xilinx开发板。具体操作就是在连接JTAG的远程电脑上安装hw_server.exe。比如硬件板在实验室或者是其他地方&#xff0c;开发代码与工程在本地计算机&#xff0c;如何将bit流烧录到实验室或者远程开发板&#xff1f; vi…

机器学习-TopicModel

概率图模型基础概率潜在语义分析&#xff08;PLSA&#xff09;LDA 概率图模型基础 猜球游戏 有两个信封&#xff0c;其中一个装有一个红球&#xff0c;一个黑球。另一个信封有两个黑球。 。 假设红球价值100元&#xff0c;黑球价值1元。 你随机从其中拿起一个信封&#xff0c;从…

嵌入式电子元器件符号大全

嵌入式系统设计中&#xff0c;了解并正确使用电子元件符号是至关重要的。电子元件的符号在电路图中起到了“通用语言”的作用&#xff0c;让工程师能够快速理解和设计复杂的电子设备。本文旨在为初学者提供一个关于常见嵌入式电子元件符号的快速指南&#xff0c;帮助他们在设计…

STM32 OLED

文章目录 前言一、OLED是什么&#xff1f;二、使用步骤1.复制 OLED.C .H文件1.1 遇到问题 2.统一风格3.主函数引用头文件3.1 oled.h 提供了什么函数 4.介绍显示一个字符的函数5. 显示十进制函数的讲解 三、使用注意事项3.1 配置符合自己的引脚3.2 花屏总结 前言 提示&#xff…

封装轮播图 (因为基于微博小程序,语法可能有些出入,如需使用需改标签)

这是在组件中使用&#xff0c;基于微博语法 <template><wbx-view class"" style"width: 100vw;height: 70vh;"><WBXswiper change"gaibian" :vertical"false" :current"current" indicatorActiveColor"…