编程小白的自学笔记十一(python爬虫入门三Selenium的使用+实例详解)

news2024/11/24 22:45:04

系列文章目录

编程小白的自学笔记十(python爬虫入门二+实例代码详解

编程小白的自学笔记九(python爬虫入门+代码详解) 

编程小白的自学笔记八(python中的多线程) 

编程小白的自学笔记七(python中类的继承) 


目录

系列文章目录

文章目录

前言

一、Selenium是什么

二、安装Selenium

 三、第一个例子(打开百度浏览器)

 四、第二个例子(在百度搜索框内输入内容)

总结


前言

作为一个编程小白,目前按照书籍已经学完爬虫部分,但是书上的爬虫过于基础,难以实战,于是我又跟在“以山河作礼。”大佬的专栏后面学,今天学习到了Selenium的使用,记录一下。


一、Selenium是什么

官方回答是:Selenium 是最广泛使用的开源 Web UI(用户界面)自动化测试套件之一。 Selenium 测试脚本可以使用任何支持的编程语言进行编码,并且可以直接在大多数现代 Web 浏览器中运行。

我个人理解这东西可以模拟一些人的操作,具体有哪些,我们一步一步看(我也是边学边记)。 

二、安装Selenium

pip install selenium就是这么简单,不说了。大佬的文章里都会说下一个浏览器的驱动,然后操作驱动,我们先试试不用驱动行不行。

 三、第一个例子(打开百度浏览器)

我们先看示例代码: 

from selenium import webdriver

drive = webdriver.Chrome()
drive.set_window_size(1100, 850)
drive.get('https://www.baidu.com/')
输出结果是错误的,提示:“The version of chrome cannot be detected. Trying with latest driver version”,这个错误就表示使用的驱动程序与安装的Chrome版本不兼容看来必须下驱动了,但是我在另一台电脑上运行这段代码是可以的,于是我仔仔细细找了一遍,发现电脑里的谷歌浏览器运行文件名竟然是chrone.exe,抱着试一试的态度,我将其改成chrome.exe,运行果然成功了。

 

下面详细分析一下代码:

from selenium import webdriver”的意思是:webdriver是selenium库中提供的一个类,它代表了一个浏览器实例,可以被用来控制浏览器进行各种操作。通过使用from selenium import webdriver,我们可以直接使用webdriver类来创建一个Chrome浏览器实例,并通过该实例来控制浏览器进行各种操作。

后面的三个代码就很好理解了,创建实例,设置窗口大小,输入打开的网页地址。

 四、第二个例子(在百度搜索框内输入内容)

 selenium提供了两个方法来获取元素位置。

find_element获取满足条件的第一个元素

find_elements获取满足条件的所有元素

这两个方法可以通过ID或者name来确定元素的位置,我们都来试试。

 首先我们先了解一下网页,在检查模式下,我们可以看到输入框的html代码为:

 

<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off"> 

我们分析这段网页代码,它的ID属性是“kw”,那么我们尝试编写一段代码,在输入框输入“加油”,代码如下:

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


drive = webdriver.Chrome()
drive.set_window_size(1100, 850)
drive.get('https://www.baidu.com/')
drive.find_element(By.ID, 'kw').send_keys('加油')

 成功运行,结果如下图:

 

我们再试试name属性,代码如下: 

from selenium import webdriver
from selenium.webdriver.common.by import By
drive = webdriver.Chrome()
drive.set_window_size(1100, 850)
drive.get('https://www.baidu.com/')
drive.find_element(By.NAME, 'wd').send_keys('躺平')

 也是成功运行的:

 

照例,我们来分析代码

“from selenium.webdriver.common.by import By”的意思是Selenium库的webdriver.common.by模块中导入了By类。

“drive.find_element(By.NAME, 'wd').send_keys('躺平')”就是通过NAME定位,输入“躺平”。

同样定位的方法还有很多,例如:

drive.find_element(By.CLASS_NAME, 's_ipt').send_keys('躺平')


总结

Selenium是一个支持各大浏览器的自动化测试工具,包括 Chrome,Safari,Firefox ,ie等。它可以直接运行在浏览器中,就如同真正的客户在使用一样。Selenium可以用于爬虫,解决一些复杂爬虫的问题。使用Selenium可以获取动态的网页数据,一些动态的数据在网页的源代码中并没有显示,这时候可以考虑用Selenium获取。

 以下是selenium常用的一些方法 :
- `driver.get(url)`:打开一个网页。
- `driver.find_element_by_*()`:通过各种方式查找元素。
- `driver.find_elements_by_*()`:通过各种方式查找元素,返回的是一个列表。
- `driver.execute_script(*args)`:执行JavaScript代码。
- `driver.switch_to.window(*args)`:切换到指定窗口。
- `driver.switch_to.frame(*args)`:切换到指定frame。
- `driver.back()`:返回上一个页面。
- `driver.forward()`:前进到下一个页面。
- `driver.refresh()`:刷新当前页面。

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

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

相关文章

phpstudy伪静态

html静态网址在文件目录真实存在就是真的html,把动态经过转换伪造成把html就是伪静态&#xff0c;可以用order by 和 union select验证一下 apache的伪静态网址搭建 找到apache的LoadModule rewrite_module modules/mod_rewrite.so把前面的#删除掉&#xff0c;开启伪静态 All…

Unity 实用插件篇 | Tutorial Master 2 游戏引导教程 功能深入学习

前言【Unity 实用插件篇】 | Tutorial Master 2 游戏引导教程 功能深入学习一、Tutorial Master Manager 面板二、Tutorial Master Manager 面板详细介绍2.1 Debug mode 调试模式2.2 Localization 本地化2.3 Pooling Settings 对象池设置2.4 Start Up Setting2.5 Tutorial List…

Python案例实现|租房网站数据表的处理与分析

在综合实战项目中&#xff0c;“北京链家网”租房数据的抓取任务已在 上一篇 完成&#xff0c;得到了数据表bj_lianJia.csv&#xff0c;如图1所示。该数据表包含ID、城区名&#xff08;district&#xff09;、街道名&#xff08;street&#xff09;、小区名&#xff08;communi…

【从删库到跑路】MySQL数据库的索引(二)——索引的使用和选择

&#x1f38a;专栏【MySQL】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【The Right Path】 &#x1f970;欢迎并且感谢大家指出小吉的问题 文章目录 &#x1f354;索引的使用⭐验证索引效率&#x1f388;细节 ⭐最左前缀法则…

Linux系统之安装MySQL8.0版本

Linux系统之安装MySQL8.0版本 一、MySQL介绍1.1 MySQL简介1.2 MySQL特点 二、本次实践介绍2.1 环境规划2.2 本次实践目的 三、卸载mariadb数据库3.1 卸载mariadb数据库3.2 卸载mysql数据库 四、配置yum仓库4.1 下载rpm文件4.2 配置yum仓库4.3 检查yum仓库状态4.4 检查mysql版本…

香橙派Zero2基于wiringPi外设库的实验(超声波测距)

超声波测距原理&#xff0c;原理可以查看下面的文章&#xff0c;这里就不赘述了 [51单片机超声波测距](http://t.csdn.cn/eYbod)在Linux中使用超声波测距会用到的时间相关的API和结构体 包含的头文件以及函数原型和时间结构体timveal原型#include<sys/time.h>int getti…

windows部署安装redis安装教程

1、下载redishttps://github.com/tporadowski/redis/releases 2、下载完然后双击安装 比较简单 略过 3、测试是否安装成功 提示bug Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf …

ffplay播放器剖析(8)----逐帧/音量调节/快进快退/倍数分析

文章目录 1.逐帧播放2. 音量调节3. seek 快进 快退4.倍速 1.逐帧播放 逐帧播放就是按s键触发的,调用step_to_next_frame触发 static void step_to_next_frame(VideoState *is) {/* if the stream is paused unpause it, then step */if (is->paused)stream_toggle_pause(i…

jmeter随记2:压测

jmeter随记1:压测 简述一、压测步骤二、观察cpu和内存占用情况三、查看磁盘占用情况 简述 关于压测&#xff0c;jmeter更直观的作用是用来编写压测脚本【请求和压测策略】&#xff0c;然后在linux服务器上执行&#xff0c;也可以在本地执行&#xff0c;压测执行脚本在启动jmet…

PHP注册/登录/发邮件--【强撸项目】

强撸项目系列总目录在000集 PHP要怎么学–【思维导图知识范围】 文章目录 本系列校训本项目使用技术 上效果图phpStudy 设置导数据库程序基本流程项目目录如图&#xff1a;注册zhuce.html配套资源作业&#xff1a; 本系列校训 用免费公开视频&#xff0c;卷飞培训班哈人&…

Oracle物化视图刷新和物化视图日志

Oracle物化视图刷新和物化视图日志 Oracle的物化视图是包括一个查询结果的数据库对像&#xff0c;它是远程数据的的本地副本&#xff0c;或者用来生成基于数据表求和的汇总表。 测试物化视图的刷新&#xff0c;参考物化视图日志&#xff0c;一个源表对应多个物化视图刷新。 物…

【Linux工具篇】项目自动构建化工具-make/Makefile

个人主页&#xff1a;平行线也会相交 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【Linux专栏】&#x1f388; 本专栏旨在分享学习Linux的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 &#x1f4ab…

matlab cross()函数叉乘 计算过程详解

向量叉乘 在数学上&#xff0c;两向量的叉乘是一个过两相交向量的交点且垂直于两向量所在平面的向量。在Matlab中&#xff0c;用函数cross实现。 函数 cross() 格式 C cross(A,B) %若A、B为向量&#xff0c;则返回A与B的叉乘&#xff0c;即CAB&#xff0c;A、B必须是3个…

c#封装bool到cpp

c#那边传一个结构体&#xff0c;结构体里包含两个bool&#xff0c;封送到cpp&#xff0c;结果发现cpp那边读取有问题。一看cpp接收变量的内存&#xff0c;两个bool占的内存都不是一个字节了&#xff0c;再次记录原因。 封送的时候&#xff0c;默认是占4个字节&#xff0c;如果…

Pycharm----导入库文件夹不在py文件的目录下

问题描述&#xff1a; 想在不同目录下导入根目录的包&#xff0c;直接写会报错。如下边object_detect.py在function文件夹下&#xff0c;导入包默认在这个文件下&#xff0c;但我想导入根目录models和utils下的包 解决方法&#xff1a; 将根目录设置为源代码根目录&#xff0…

linux静态库,动态库总结

1.介绍 使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据&#xff0c;这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化&#xff0c;更容易重新编译&#xff…

【Spring Cloud】Hystrix熔断机制

文章目录 前言什么是hystrix的熔断&#xff1f;使用hystrix熔断功能的配置Hystrix 工作原理Hystrix工作流 前言 什么是hystrix的熔断&#xff1f; hystrix熔断主要是指在一定的时间窗口内&#xff0c;当请求的次数达到一定的失败比率后&#xff0c;hystrix就会主动拒绝服务&a…

【图像分割】基于浣熊优化算法COA的Otsu(大津法)多阈值电表数字图像分割 电表数字识别【Matlab代码#52】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. 原始COA算法1.1 开发阶段1.2 探索阶段 2. 多阈值Otsu原理3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】 1. 原始…

长尾式差分放大电路

3.3.2差分放大电路 电路 条件 静态分析 对共模信号的抑制作用 当产生温度变化时&#xff0c;也类似加入了共模信号&#xff0c;由于负反馈电阻 的存在&#xff0c;会产生如下变化。 对差模信号的放大作用 电路 交流等效电路 具体分析 具有恒流源的差分放大电路 电路 详细分析…

STM32 OLED显示汉字及屏幕滚动(I2C协议)

文章目录 一、任务目标二、材料准备硬件&#xff1a;软件&#xff1a; 三、AHT20温湿度传感器的使用四、OLED的使用1.硬件2.字模汉字编码原理取字模 3.工程4.电路连接5.实验效果 五、总结六、参考资料 一、任务目标 理解OLED屏显和汉字点阵编码原理&#xff0c;使用STM32F103的…