「Python」Selenium

基本使用

  1. 导入:from selenium import webdriver
  2. 创建浏览器操作对象:browser = webdriver.Chrome()
  3. 访问网站
# 访问网站
url = 'https://www.jd.com'
browser.get(url)
"""
selenium基本使用Author:binxin
Date:2023/11/29 14:42
"""
# 导入
from selenium import webdriver# 创建浏览器操作对象
browser = webdriver.Chrome()# 访问网站
url = 'https://www.jd.com'
browser.get(url)# page_source获取网页源码
content = browser.page_source
print(content)

元素定位

  1. 导入:from selenium.webdriver.common.by import By
inputTag = driver.find_element(By.ID, "value")inputTag = driver.find_element(By.CLASS_NAME, "value")inputTag = driver.find_element(By.NAME, "value")inputTag = driver.find_element(By.TAG_NAME, "value")inputTag = driver.find_element(By.XPATH, "value")inputTag = driver.find_element(By.CSS_SELECTOR, "value")
"""
selenium 元素定位
Author:binxin
Date:2023/11/29 15:05
"""
from selenium import webdriver
from selenium.webdriver.common.by import Bybrowser = webdriver.Chrome()url = 'https://www.baidu.com'browser.get(url)# 元素定位# 根据ID找到对象
# button = browser.find_element(By.ID,'su')# 根据标签属性的属性值获取对象
# button = browser.find_element(By.NAME, 'wd')# 根据xpath语句获取对象
# button = browser.find_element(By.XPATH, '//input[@id="su"]')# 根据标签名获取对象
# button = browser.find_element(By.TAG_NAME, 'input')# 使用bs4的语法获取对象
# button = browser.find_element(By.CSS_SELECTOR, '#su')button = browser.find_element(By.LINK_TEXT, '新闻')
print(button)

元素信息

  1. 获取元素属性:.get_attribute('class')
  2. 获取元素文本:.txt
  3. 获取标签名:.tag_name
"""
元素信息Author:binxin
Date:2023/11/29 16:31
"""
from selenium import webdriver
from selenium.webdriver.common.by import Bybrowser = webdriver.Chrome()url = 'https://www.baidu.com'
browser.get(url)input = browser.find_element(By.ID, 'su')# 获取标签的属性
print(input.get_attribute('class'))
# 获取标签名
print(input.tag_name)a = browser.find_element(By.LINK_TEXT, '新闻')
# 获取元素文本
print(a.text)

交互

  1. 点击:click()
  2. 输入:send_keys()
  3. 后退操作:browser.back()
  4. 前进操作:browser.forward()
  5. 模拟JS滚动:
js='document.documentElement.scrollTop=100000'
browser.execute_script(js)  # 执行js代码
  1. 获取网页代码:page_source
  2. 退出:browser.quit()
"""
selenium交互Author:binxin
Date:2023/11/29 16:47
"""
from selenium import webdriver
from selenium.webdriver.common.by import Bybrowser = webdriver.Chrome()url = 'https://www.baidu.com'browser.get(url)import timetime.sleep(2)# 获取文本框对象
input = browser.find_element(By.ID, 'kw')# 在文本框中输入周杰伦
input.send_keys('周杰伦')time.sleep(2)# 获取百度一下按钮
button = browser.find_element(By.ID, 'su')# 点击按钮
button.click()time.sleep(2)# 滑动窗口到底部
js_bottom = 'document.documentElement.scrollTop=100000'
browser.execute_script(js_bottom)time.sleep(2)# 获取下一页按钮
next = browser.find_element(By.XPATH, '//a[@class="n"]')
# 点击下一页
next.click()time.sleep(2)# 返回上一页
browser.back()
time.sleep(2)# 重新回到上一页
browser.forward()time.sleep(3)# 退出
browser.quit()

Chrome handless

  1. 基本代码
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionschrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')browser = webdriver.Chrome(options=chrome_options)
  1. 封装配置
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsdef share_browser():chrome_options = Options()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')browser = webdriver.Chrome(options=chrome_options)return browser
"""
Chrome handlessAuthor:binxin
Date:2023/11/30 11:06
"""
from selenium import webdriver
from selenium.webdriver.chrome.options import Optionsdef share_browser():chrome_options = Options()chrome_options.add_argument('--headless')chrome_options.add_argument('--disable-gpu')browser = webdriver.Chrome(options=chrome_options)return browser# 封装调用
browser = share_browser()
url = 'http://www.baidu.com/'
browser.get(url)
browser.save_screenshot('baidu.png')

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

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

相关文章

【C语言】常见字符串函数的功能与模拟实现

目录 1.strlen() 模拟实现strlen() 2.strcpy() 模拟实现strcpy() 3.strcat() 模拟实现strcat() 4.strcmp() 模拟实现strcmp() 5.strncpy() 模拟实现strncpy() 6.strncat() 模拟实现strncat() 7.strncmp() 模拟实现strncmp() 8.strstr() 模拟实现strstr() 9.str…

Redis核心技术与实战【学习笔记】 - 29.Redis的未来猜想,基于 NVM内存

前言 这几年,新型非易失存储(Non-Volatile Memory,NVM)器件发展得非常快。NVM 器件具有容量大、性能快、能持久报错数据的特性,这些刚刚就是 Redis 追求的目标。同时 NVM 器件像 DRAM 一样,可以让软件以字…

几个经典金融理论

完整EA:Nerve Knife.ex4黄金交易策略_黄金趋势ea-CSDN博客 一、预期效用理论 预期效用理论是描述人们在做出决策时如何考虑风险和不确定性的一种理论。该理论最初由经济学家冯诺伊曼(John von Neumann)和奥斯卡摩根斯坦恩(Oskar…

全栈笔记_工具篇(nvm免安装版配置)

免安装版配置 下载nvm包:选择免安装压缩包nvm-noinstall.zip 解压zip包:将压缩包解压到指定目录,如:C:\nvm 新增环境变量: NVM_HOME:nvm解压之后的文件路径,对应配置文件里的root值NVM_SYMLINK:nvm 文件夹里新建 nodejs文件夹,对应配置文件里的path值 修改环境变量Pat…

跨域问题浅析

什么是源(域) 在W3C的定义中,源是由协议、主机(IP 地址或者域名)和端口三者确定。如果两个 URL 的协议、主机(IP 地址或者域名)和端口都一样的话,那么这两个 URL 就是同源的。 同源策略 由于源与源之间是未知且默认的,所以非本源中的资源(即URL对应的资源)是不可控的…

数解 transformer 之 self attention transformer 公式整理

千万不要从任何角度轻看 transformer,重要的话说四遍: 千万不要从任何角度轻看 transformer 千万不要从任何角度轻看 transformer 千万不要从任何角度轻看 transformer Attention is all you need 整个项目是鬼斧神工之作,巧夺天工之作&a…

Spring 用法学习总结(三)之 AOP

Spring学习 7 bean的生命周期8 AOP面向切面编程8.1 AOP相关术语8.2 AOP使用 7 bean的生命周期 bean的生命周期主要为bean实例化、bean属性赋值、bean初始化、销毁bean,其中在实例化和初始化前后都使用后置处理器方法,而InstantiationAwareBeanPostProce…

2024大健康展,山东省大健康产业博览会,济南营养健康展会

立足济南,面向世界,2024第六届中国国际大健康产业博览会,定档2024年5月27-29日,在济南黄河国际会展中心举办; 2024第6届中国(济南)国际大健康产业博览会(China-DJK山东健博会&#…

控制论与科学方法论

《控制论与科学方法论》,真心不错。 书籍原文电子版PDF:https://pan.quark.cn/s/00aa929e4433(分类在学习目录下) 备用链接:https://pan.xunlei.com/s/VNgj2vjW-Hf_543R2K8kbaifA1?pwd2sap# 控制论是一种让系统按照我…

CTF-web 之 burp suite 使用

burp suite 使用 一般其是作为一个辅助工具,直接使用来解题的部分是少数,我们可以使用它来观察请 求和响应,并且可以反复的提交,关键的是他还带有很多其他的功能,在我们做题的过程中, 使用的关键点包括&…

MyBatis篇----第六篇

系列文章目录 文章目录 系列文章目录前言一、什么是 MyBatis 的接口绑定?有哪些实现方式?二、使用 MyBatis 的 mapper 接口调用时有哪些要求?三、Mapper 编写有哪几种方式?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳…

OpenGL-ES 学习(1)---- AlphaBlend

AlphaBlend OpenGL-ES 混合本质上是将 2 个片元的颜色进行调和(一般是求和操作),产生一个新的颜色 OpenGL ES 混合发生在片元通过各项测试之后,准备进入帧缓冲区的片元和原有的片元按照特定比例加权计算出最终片元的颜色值,不再是新&#xf…

面试官:介绍一下MVC框架

前言 大家好,我是chowley,MVC相信大家都听说过,今天我就记录一下我心中的MVC框架 MVC(Model-View-Controller)是一种软件设计模式,用于将应用程序分为三个核心部分:模型(Model&…

书生浦语大模型实战营-课程笔记(2)

介绍了一下InternLm的总体情况。 InternLm是训练框架,Lagent是智能体框架。 这个预训练需要这么多算力,大模型确实花钱。 Lagent是智能体框架,相当于LLM的应用。 pip设置 开发机的配置 pip install transformers4.33.1 timm0.4.12 sente…

计算机二级数据库之数据模型

数据模型 模型的概念 模型的介绍模型是对现实世界特征的模拟和抽象, 数据模型的概念: 数据模型是对现实世界中数据特征的抽象,描述的是数据的共性。 数据模型是用来在数据库中抽象、表示和处理现实世界中的数据和信凹。 其相关的共同特…

vue项目搭建测试

5&#xff0c;项目测试 导入elementplus以及样式 import ElementPlus from element-plus import element-plus/dist/index.csscreateApp(App).use(store).use(router).use(ElementPlus).mount(#app)<template><el-row class"mb-4"><el-button>De…

MATLAB|基于改进二进制粒子群算法的含需求响应机组组合问题研究(含文献和源码)

目录 主要内容 模型研究 1.改进二进制粒子群算法&#xff08;BPSO&#xff09; 2.模型分析 结果一览 下载链接 主要内容 该程序复现《A Modified Binary PSO to solve the Thermal Unit Commitment Problem》&#xff0c;主要做的是一个考虑需求响应的机组组合…

投资银行在网络安全生态中的作用

文章目录 一、投资银行的含义(一)并购买方。(二)并购卖方。(三)IPO辅助。(四)投资银行业务的另一方面是帮助这些交易融资。二、从投资银行角度看网络安全产业(一)行业的短期前景三、复杂的网络安全并购(一)行业知识对投资银行业务很重要(二)在网络安全领域,技术…

HDFS的超级用户

一. 解释原因 HDFS(Hadoop Distributed File System)和linux文件系统管理一样&#xff0c;也是存在权限控制的。 但是很不一样的是&#xff0c; 在Linux文件系统中&#xff0c;超级用户Superuser是root而在HDFS中&#xff0c;超级用户Superuser是启动了namenode的用户&#x…

neo4j下载安装最新教程 2024.02

文章目录 neo4j简介下载地址配置环境变量命令行启动验证安装结果 neo4j简介 Neo4j 是一个高性能的 NoSQL 图形数据库&#xff0c;它将结构化数据存储在网络&#xff08;从数学角度叫做图&#xff09;上而不是表中。Neo4j 也可以被看作是一个高性能的图引擎&#xff0c;该引擎具…