【Selenium上】——全栈开发——如桃花来

news2024/11/22 1:26:35

目录索引

  • ==Selenium是什么:==
  • ==下载和配置环境变量:==
  • ==1. 基本使用:==
    • 导入五个常用包:
    • 基本代码:
  • ==实例引入:==
  • ==声明不同浏览器对象:==
  • ==访问页面:==

Selenium是什么:

  • Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。
  • 可以在一定程度上避免JS逆向的干扰

你问我selenium是什么?那我只能告诉你这是个高科技超级武器,爬虫界的神,可以让你节省极大的时间和简化代码的复杂程度。

下载和配置环境变量:

'''
1,安装selenium
	-- 命令:pip install selenium
	-- 网络不稳的请换源安装:pip install selenium -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

2,打开百度,输入chrome webdriver,下载谷歌浏览器webdriver驱动
	-- http://npm.taobao.org/mirrors/chromedriver/
	-- 根据自己谷歌版本选择驱动器
	-- 选择对应版本,如果没有对应版本选择跟谷歌版本相近但不超过谷歌版本的
	-- 下载后解压

3,拷贝到python安装路径
	-- 找到Lib目录
	-- 进入site-packages目录,将下载好的chromedriver.exe程序驱动放进该目录文件里
	--如何找到Python安装路径  可以打开cmd,输入where Python
	

4,配置环境变量
	-- 将webdriver驱动所在文件路径复制
	-- 添加到系统环境变量里的Path路径里

5,验证是否配置完成
	-- from selenium import webdriver
	   a = webdriver.Chrome()
	   a.get('https://www.baidu.com/')


6,如果上述操作报错,执行以下方法:
	-- 将下载的驱动放入python环境的Scripts的文件夹里
	-- 再将路径添加到环境变量(如果安装python时勾选了自动添加环境变量这步可省略)

7,上述两种方法还报错,执行以下方法:
	-- 将下载的驱动放进项目根目录
'''
from selenium import webdriver

a = webdriver.Chrome()
a.get('https://www.baidu.com/')

如果在运行后发现网页会自动打开,就代表下载成功了!

1. 基本使用:

从上到下的代码都是连续的,但是为了方便学习,这里将它分别拆开来看。

导入五个常用包:

from selenium import webdriver #驱动浏览器
from selenium.webdriver.common.by import By #选择器,用于选择
from selenium.webdriver.common.keys import Keys #按键,起到鼠标点击的作用
from selenium.webdriver.support import expected_conditions as EC #等待所有标签加载完毕
from selenium.webdriver.support.wait import WebDriverWait #等待页面加载完毕,寻找某些元素


注释:

  • 驱动浏览器
  • 选择器,用于选择
  • 按键,起到鼠标点击的作用
  • 等待所有标签加载完毕
  • 等待页面加载完毕,寻找某些元素

基本代码:

browser = webdriver.Chrome() #browser驱动对象,实例化一个对象
browser.get("网址地址") #调用浏览器驱动对象访问站点

注释:

  • browser驱动对象,实例化一个对象
  • 调用浏览器驱动对象访问站点
  • browser的中文释义是浏览器

实例引入:

1.打开百度
2.在搜索框输入爬虫
3.点击搜索按钮
  • 利用异常捕捉是因为设定了等待时间
try:
    #1.打开百度
    browser.get("https://www.baidu.com/") #调动浏览器驱动对象访问站点
    #2.输入python文本
    # text_input = browser.find_element(By.ID,"kw") #kw是搜索框的id名
    text_input = browser.find_element(By.XPATH,'//*[@id="kw"]')
    #向输入框中输入内容
    text_input.send_keys("美女")
    #按回车按钮
    text_input.send_keys(Keys.ENTER)
    #等待事件——会受网络的影响
    wait = WebDriverWait(browser,10)#参数一:浏览器对象 参数二:最大等待的秒数
    #等待的元素,如果该元素加载完毕则等待事件停止。如果超出时间还没加载出等待的元素,那么程序就会报错
    wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="s_tab"]/div/b')))#选什么元素自己决定
    print(browser.current_url)#看url
    print(browser.get_cookies())#看cookie
    print(browser.page_source)#看源代码
    input()#让页面卡住,不至于自动关闭

finally:#无论是否发生异常都会执行的代码块
    browser.close()#关闭浏览器

呈现效果:
在这里插入图片描述
总结:

1. text_input.send_keys()可以用来输入内容和按下按钮
2. wait是和wait.until搭配使用的。一个设置等待,一个设置等待元素
3. wait = WebDriverWait(浏览器驱动对象,最长等待时间)
4.  presence_of_element_located()方法中传入的参数格式一定是一个元组,别忘了!
5. 
	- browser.current_url 打印url
	- browser.get_cookies() 打印cookie信息
	- browser.page_source 查看源代码

声明不同浏览器对象:

selenium可以支持多种浏览器

from selenium import webdriver
browser = webdriver.Chrome()
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()

访问页面:

一些最简洁的访问页面的代码

from selenium import webdriver
#声明Chrome浏览器对象
browser = webdriver.Chrome()
#请求页面,返回的数据封装在了browser对象里面,不需要用额外的变量接收
browser.get('https://www.taobao.com')
#获取网页源代码
print(browser.page_source)
#关闭当前网页
browser.close()

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

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

相关文章

Cesium入门之四:基于Vue3+Vite+Cesium构建三维地球场景

Cesium官网中提供了基于webpack配置Cesium的方法,但是这种方法太繁琐,而且使用webpack时程序启动没有Vite启动快,因此,这里选择vite创建vue3cesium构建项目 创建vue3项目 新建CesiumProject文件夹,在该文件夹上点击右…

clang-format configurator - 交互式创建 clang-format 格式配置文件

clang-format configurator - 交互式创建 clang-format 格式配置文件 clang-format configurator https://zed0.co.uk/clang-format-configurator/ clang-format-configurator https://github.com/zed0/clang-format-configurator Interactively create a clang-format confi…

minikube,搭建+镜像加速,坚持 3 分钟,带你玩的明明白白

一、 安装 cri-docker 下载安装 # 在 https://github.com/Mirantis/ 下载 https://github.com/Mirantis/tar -xvf cri-dockerd-0.3.1.amd64.tgzcp cri-dockerd/cri-dockerd /usr/bin/chmod x /usr/bin/cri-dockerd# 确认已安装版本 cri-dockerd --version配置启动文件 cri-do…

一篇让你精通JWT,妥妥的避坑指南~

视频教程传送门:JWT 两小时极简入门:JWT实战应用与防坑指南~_哔哩哔哩_bilibiliJWT 两小时极简入门:JWT实战应用与防坑指南~共计12条视频,包括:01.课程介绍与前置知识点、02.JWT概念、03.JWT组成等,UP主更多…

一个例子让你彻底弄懂分布式系统的CAP理论

1 推荐的文章 下面这篇知乎文章是我见过的最简单易懂的一篇,把CAP定义以及为什么AP和CP只能二选一以及场景特定下选AP还是CP作为系统目标等讲解明明白白 谈谈分布式系统的CAP 2 个人对上面这篇文章的的一些补充 可用性可以人为设置一个阈值,比如用户体…

openPOWERLINK源码(最新)在stm32单片机上的移植指南

最近着了powerlink的道,连续几晚十二点前没睡过觉。不得不说兴趣这东西劲太大了,让人睡不着。喜欢上研究POWERLINK,最新版的源码结构挺清晰的,移植并测试了嵌入式linux作为从站和电脑主站之间的通信,挺有趣的。接下来想…

路由器配置方法(固定地址)

前言 由于学校给分配了IP地址,因此我们的路由器接入的时候不能选择自动接入方式,而要选择固定地址方式。 step 1 我们首先先将路由器接上网线,这里注意一定要接wan口 因为路由器分为两个口,wan口是入口,lan口是出口…

第十二届蓝桥杯青少组国赛Python真题,包含答案

第十二届蓝桥杯青少组国赛Python真题 一、选择题 第 1 题 单选题 设sHi LanQiao,运行以下哪个选项代码可以输出“LanQiao”子串 () 答案:A 第 2 题 单选题 已知a-2021.0529,运行以下哪个选项代码可以输出“2021.05”() 答案:…

2023.05.12 C高级 day4

有m1.txt m2.txt m3.txt m4.txt,分别创建出对应的目录,m1 m2 m3 m4 并把文件移动到对应的目录下 #!/bin/bash for i in 1 2 3 4 dotouch m$i.txtmkdir m$imv m$i.txt ./m$i/m$i.txt done 运行结果 2. 使用break关键字打印九九乘法表,提示&am…

【2023/05/12】Z3

Hello!大家好,我是霜淮子,2023倒计时第7天。 Share Listen,my heart,to the whispers of the world with which it makes love to you. 译文: 静静的听,我的心呀,听那世界的低语,这是它对你求…

黑客必备工具:Hydra的完整安装和使用指南

安装Hydra 1.安装必要的依赖库 在终端中执行以下命令,安装Hydra所需的依赖库: sudo apt-get install build-essential checkinstall libssl-dev libssh-dev libidn11-dev libpcre3-dev libgtk2.0-dev libmysqlclient-dev libpq-dev libsvn-dev firebi…

经典HTML前端面试题总结

经典HTML前端面试题总结 1. 1简述一下你对 HTML 语义化的理解?.1.2 标签上 title 与 alt 属性的区别是什么?1.3 iframe的优缺点?1.4 href 与 src?1.5 HTML、XHTML、XML有什么区别1.6 知道img的srcset的作用是什么?1.7 …

代码随想录算法训练营第五十九天

代码随想录算法训练营第五十九天| 503.下一个更大元素II,42. 接雨水 503.下一个更大元素II42. 接雨水复杂单调栈整合单调栈 503.下一个更大元素II 题目链接:下一个更大元素II 因为可以循环,直接拼一个nums在nums后面就行了。 class Solutio…

[OGeek2019]babyrop

小白垃圾笔记不建议阅读。。。。 这道题额………………做了好几天。。 更离谱的是还把ubuntu16给玩坏了。 师傅说kali可以打通,气得我连夜下卡里 后来发现不是版本的问题,是我的脚本的问题。libc写的不对。 先分析这道题。 32位程序。没有canary&…

串口与wifi模块

经过以下学习,我们掌握: AT指令与wifi模块的测试方法:通过CH340直接测试,研究各种AT指令下wifi模块的响应信息形式。编程,使用串口中断接收wifi模块对AT指令的响应信息以及透传数据,通过判断提高指令执行的…

C语言函数大全-- w 开头的函数(1)

C语言函数大全 本篇介绍C语言函数大全-- w 开头的函数 1. wcscat 1.1 函数说明 函数声明函数功能wchar_t * wcscat(wchar_t *dest, const wchar_t *src);用于将一个宽字符字符串追加到另一个宽字符字符串的末尾 参数: dest : 目标字符串src &#xf…

29.Mybatis—多表操作与注解开发

目录 一、Mybatis学习。 (1)MyBatis的多表操作。 (1.1)一对一查询。 (1.2)一对多查询。 (1.3)多对多查询。 (1.4)三种查询知识小结。 一、Mybatis学习。…

算法修炼之练气篇——练气十二层

博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的…

从零开始学习Vue3:掌握前端开发的核心技能——更新中

这里写目录标题 一、了解ts1、ts是js的超集 二、掌握ts基本写法1、数据类型2、对象使用3、类4、多态5、类修饰符6、存储器7、抽象类 一、了解ts 1、ts是js的超集 即你可以在ts中使用原生js语法:JavaScript 更多功能 TypeScript** js是弱类型语言,而t…

ESP32设备驱动-LIS3DSH加速度传感器驱动

LIS3DSH加速度传感器驱动 文章目录 LIS3DSH加速度传感器驱动1、LIS3DH介绍2、硬件准备3、软件准备4、驱动实现1、LIS3DH介绍 LIS3DSH 是一款超低功耗高性能三轴线性加速度计,属于“纳米”系列,具有嵌入式状态机,可通过编程实现自主应用。 LIS3DSH 具有 2g/4g/6g/8g/16g 的动…