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

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()

相关文章:

Python爬虫selenium框架基本使用

一、安装导入 使用包管理器安装 pip3 install selenium 二、WebDriver工具 要使用这个工具我们需要保证安装了一个浏览器的驱动器。 Python的WebDriver是一个用于自动化Web浏览器操作的工具,它属于Selenium的一部分,特别是Selenium 2.0及以后版本中…...

sql 时间交集

任务(取时间交集) 前端输入开始时间和结束时间,通过sql筛选出活动开始时间和活动结束时间再开时时间和结束时间有交集的活动 想法: 前后一段时间内遇到了类似取交集的,从网上找到了两种写法,再结合GPT等…...

【深度学习】05-Rnn循环神经网络-01- 自然语言处理概述/词嵌入层/循环网络/文本生成案例精讲

循环神经网络(RNN)主要用于自然语言处理的。 循环神经网络(RNN)、卷积神经网络(CNN)和全连接神经网络(FCN)是三种常见的神经网络类型,各自擅长处理不同类型的数据。下面…...

基于JAVA+SpringBoot+Vue的电商平台的设计与实现

基于JAVASpringBootVue的电商平台的设计与实现 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接&#x1f345…...

CSS盒模型-怪异盒模型笔记-思维导图-案例等

文章目录 一、盒模型(重点)二、怪异盒模型三、块级元素和行内元素区别汇总四、块级元素和行内元素的转换(显示方式)||元素的显示和隐藏五、思维导图六、笔记资料 一、盒模型(重点) 所有HTML元素可以看作盒子。 CSS盒模型本质上是…...

thinkphp6开发的通用网站系统源码

thinkphp6开发的通用网站系统源码。 基于ThinkPHP6框架开发的通用后台权限管理系统,底层采用国内最流行的ThinkPHP6框架, 支持内容管理、文章管理、用户管理、权限管理、角色管理等功能。 代码下载百度网盘...

Junit 5 - 理解Mockito,提高UT 覆盖率

前言 当我是1个3年初级程序员时, 我被面试者问到1个问题: 如何保证你的开发任务交付质量 当我是1个7年开发组长时, 我被面试者问到另1个问题:如何保证你的团队的代码质量, 减少rework。 又若干年后, 我才…...

微服务sentinel解析部署使用全流程

sentinel源码地址: 介绍 alibaba/Sentinel Wiki GitHub sentinel官方文档: https://sentinelguard.io/zh-cn/docs/introduction.html Sprong Cloud alibaba Sentinel文档【小例子】 : Sentinel alibaba/spring-cloud-alibaba Wiki GitHub 目录 1、…...

YOLO11震撼发布!

非常高兴地向大家介绍 Ultralytics YOLO系列的新模型: YOLO11! YOLO11 在以往 YOLO 模型基础上带来了一系列强大的功能和优化,使其速度更快、更准确、用途更广泛。主要改进包括 增强了特征提取功能,从而可以更精确地捕捉细节以更…...

机器学习框架(含实例说明)

机器学习框架是用于开发和部署机器学习模型的软件库和工具集。它们提供了一系列的算法、工具和基础设施,帮助开发者更高效地构建、训练和部署机器学习模型。以下是一些主要的机器学习框架及其详细介绍: 1. TensorFlow TensorFlow 是由Google开发的开源…...

vue2与vue3知识点

1.vue2(optionsAPI)选项式API 2.vue3(composition API)响应式API vue3 setup 中this是未定义(undefined)vue3中已经开始弱化this vue2通过this可以拿到vue3setup定义得值和方法 setup语法糖 ref > …...

从源码中学习动态代理模式

动态代理模式 动态代理是 Java 反射(Reflection)API 提供的一种强大机制,它允许在运行时创建对象的代理实例,而不需要在编译时静态地创建。 Java 提供了两种主要的方式来实现动态代理: 基于接口的动态代理&#xff1a…...

谷歌浏览器完美清除缓存

1.在页面上按下键盘的F12,打开控制台。 2.鼠标放到刷新图标上,点击鼠标右键,选择‘清空缓存并硬性重新加载’。 这样浏览器对网站页面的缓存就彻底被清理干净了。 目前支持该操作方式的浏览器有谷歌和Edge浏览器。 有的浏览器不支持该方式操…...

《如何高效学习》

有道云笔记 第一部分 整体性学习策略 结构 结构就像思想中的一座城市,有很多建筑物,建筑物之间有道路相连,有高大而重要的与其他建筑有上百条路相连,无关紧要的建筑只有少数泥泞的小道与外界相通。 建立良好的知识结构就是绘制…...

阿里云ACP认证考试题库

最近有好些同学,考完阿里云ACP了,再来跟我反馈:自己花700买的阿里云ACP题库,结果答案是错的! 或者考完后发现,买的阿里云ACP题库覆盖率只有50%! 为避免大家继续踩坑,给大家分享一个阿…...

学习经验分享【38】YOLOv11解读——最新YOLO版本

YOLO算法更新速度很快,已经出到V11版本,后续大家有想发论文或者搞项目可更新自己的baseline了。后续将改进YOLOv11算法,有需要的朋友可关注,我会持续进行更新。 YOLO11是Ultralytics YOLO系列实时目标检测器的最新迭代版本&#x…...

电商选品/分析| 亚马逊常见插件爬虫实战之-helium插件

说明 插件爬虫相当于二次爬虫,二次加工信息,因为大部分插件信息也是从正规网上去获取数据,这次列举helium插件爬虫案例,其他插件爬虫也是类似这个方式. 需求 1、⽤⾕歌浏览器,下载chrome extension:“Helium 10 2、登录helium10 3、打开 打开Amazo…...

遇到慢SQL、SQL报错,应如何快速定位问题 | OceanBase优化实践

在数据库的使用中,大家时常会遇到慢SQL,或执行出错的SQL。对于某些SQL问题,其错误原因显而易见,但也有不少情况难以直观判断。面对这类问题,我们应当如何应对?如何准确识别SQL错误的根源?是否需…...

postgresql僵尸进程的处理思路

简介 僵尸进程(zombie process)是指一个已经终止但仍然在进程表中保留条目的进程。正常情况下,当一个进程完成执行并退出时,操作系统会通过父进程调用的wait()或waitpid()系统调用来收集该子进程的退出状态。如果父进程未及时调用…...

Springboot 练习

Springboot练习——分页查询 Emp类 package com.wzb.pojo20240930;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.time.LocalDate; import java.time.LocalDateTime;Data NoArgsConstructor AllArgsConstructor public…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

JVM 内存结构 详解

内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: ​ 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中,用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例,介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单,执行相应操作,并提供平滑的滚动动画效果。 本文设计了一个…...

从零开始了解数据采集(二十八)——制造业数字孪生

近年来,我国的工业领域正经历一场前所未有的数字化变革,从“双碳目标”到工业互联网平台的推广,国家政策和市场需求共同推动了制造业的升级。在这场变革中,数字孪生技术成为备受关注的关键工具,它不仅让企业“看见”设…...

解析“道作为序位生成器”的核心原理

解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...

如何通过git命令查看项目连接的仓库地址?

要通过 Git 命令查看项目连接的仓库地址,您可以使用以下几种方法: 1. 查看所有远程仓库地址 使用 git remote -v 命令,它会显示项目中配置的所有远程仓库及其对应的 URL: git remote -v输出示例: origin https://…...