selenium在Pycharm中结合python的基本使用、交互、无界面访问

devtools/2024/9/22 14:19:12/

下载

下载与浏览器匹配的浏览器驱动文件,这里一定注意的是,要选择和浏览器版本号相同的驱动程序,否则后面会有很多问题。

(1)浏览器(以google为例)版本号的查询:

我这里的版本号是124版本,所以要下载对应版本号的驱动文件

1.ChromeDriver 国内下载地址:Get WebDriver - Download WebDriver ChromeDriver

2.版本号在114之前的选择如下地址:chromedriver.storage.googleapis.com/index.html

安装selenium

下载selenium包:

python">pip install selenium

建议安装较低版本的selenium,这里建议安装4.5.0版本,否则可能会出现闪退问题

python">pip install selenium==4.5.0

selenium入门

(1)将下载的chromedriver包解压得到chromedriver.exe,并放到要使用的当前目录下:

(2)在所需要使用的文件中导入selenium

python"># (1) 导入selenium
from selenium import webdriver

(3)创建浏览器操作对象

python"># (2) 创建浏览器操作对象
browser = webdriver.Chrome()

(4) 访问网站

python"># 访问网址
url = 'https://www.jd.com/'    #以访问京东为例
browser.get(url)

(5) page_source获取网页源码

python"># 获取网网页源码 page_source获取网页源码
content = browser.page_source
print(content)

技元素定位方法

需要先导入By

python">from selenium.webdriver.common.by import By

(1)使用id来找到对象

python">button = driver.find_element(By.ID, 'su')
print(button)

(2)根据xpath语句来获取对象

python">button = driver.find_element(By.XPATH, '//input[@id="su"]')
print(button)

(3)根据bs4表示语句来获取对象

python">button = driver.find_element(By.CSS_SELECTOR, '#su')
print(button)

(4)根据标签名字来获取对象

python">button = driver.find_element(By.TAG_NAME, 'input')
print(button)

(5)根据标签名字来获取对象[返回列表,多个]

python">button = driver.find_elements(By.TAG_NAME, 'input')
print(button)

(6)链接文本

python">button = driver.find_elements(By.LINK_TEXT, '新闻')
print(button)

交互

(1)在文本框中输入内容【send_keys】

python"># 获取文本框对象
input  = broswer.find_element(By.ID, 'kw')
# 在文本框中输入周杰伦
content = input.send_keys('袁隆平')

(2)点击按钮

python"># 获取百度一下的按钮
baiduyixia  = broswer.find_element(By.ID, 'su')
# 点击一下按钮
baiduyixia.click()

(3)滑到底部[执行脚本]

python">js_bottom = 'document.documentElement.scrollTop=100000'
broswer.execute_script(js_bottom)

(4)获取下一页按钮并执行点击

python"># 创建浏览器对象
broswer = webdriver.Chrome()
broswer.forward()  #前进

(5)回退到上一页

python">broswer = webdriver.Chrome()
broswer.back()  #后退

(6)关闭浏览器

python">broswer = webdriver.Chrome()
broswer.quit()   #关闭浏览器

优化

(1)handless

      selenium默认是有页面的,所以会存在加载大量css和js。针对这一问题,selenium下的handless可以实现无界面访问,提高访问速度和效率。

python"># 基本配制
def share_browser():options = webdriver.ChromeOptions()  # 创建配置对象options.add_argument('--headless')  # 无头参数,浏览器隐藏在后台运行options.add_argument('--window-size=1920x1080')  # 设置浏览器分辨率(窗口大小)options.add_argument('--disable-gpu')  # 禁用GPU加速browser = webdriver.Chrome(options=options)  # 创建浏览器对象return browser

以访问csdn为例演示一个小案例:

python">from selenium import webdriverdef share_browser():options = webdriver.ChromeOptions()  # 创建配置对象options.add_argument('--headless')  # 无头参数,浏览器隐藏在后台运行options.add_argument('--window-size=1920x1080')  # 设置浏览器分辨率(窗口大小)options.add_argument('--disable-gpu')  # 禁用GPU加速browser = webdriver.Chrome(options=options)  # 创建浏览器对象return browserbroswer = share_browser()url = 'https://www.csdn.net/'    # 访问csdn页面broswer.get(url)
broswer.save_screenshot('csdn.png')

快照

 关于options的更多配置,请看:Selenium自动化教程02:浏览器options配置及常用的操作方法_selenium options-CSDN博客

(2) phantomjs

phantomjs也可以实现无界面,但现已经被启用,且操作较handless为麻烦,固不推荐。


http://www.ppmy.cn/devtools/22391.html

相关文章

addEventListener()方法中的参数,以及作用

addEventListener() 方法是 JavaScript 中用于向指定元素添加事件监听器的方法。它有两个参数: 事件名称 (type):这是一个字符串,表示要监听的事件名称。例如,click、mouseover、keydown 等。事件处理函数 (listener)&#xff1a…

代码随想录算法训练营DAY40\DAY41|C++动态规划Part.3|343.整数拆分、96.不同的二叉搜索树

DAY40休息日,本篇为DAY41的内容 文章目录 343.整数拆分思路dp含义递推公式(难点)初始化遍历顺序打印 CPP代码数学方法归纳证明法 96.不同的二叉搜索树思路dp含义递推公式初始化遍历顺序打印 CPP代码题目总结 343.整数拆分 力扣题目链接 文章…

verilog 从入门到看得懂---matlab 自动生成verilog

matlab 的强大不用多说,以前经常用simulink 生成c,最近尝试用simulink进行了verilog的生成,方法也很简单。 一个简单的示例如下。 1,新建一个模型文件,并且根据需要进行模型搭建 2.配置HDL生成模块 3.点击 generation…

Docker 简单使用及安装常用软件

一、Docker 安装、配置与卸载 1.1、Docker 安装 # 1.安装gcc环境 yum -y install gcc gcc-c && \# 2. 卸载docker旧版本(可能之前有安装) yum -y remove docker docker-common docker-selinux docker-engine && \# 3. 安装依赖的软件包…

Linux 系统IO函数之stat、lstat函数

1、stat函数 要点: int stat(const char *pathname, struct stat *statbuf); 作用:查看文件的信息 man 2 stat/return value1、stat结构体: 2、sturct stat 结构体中 st_mode 的含义(文件的类型和存取的权限): st_mo…

陪诊小程序的市场潜力与发展趋势研究

随着社会的快速发展和人口老龄化的加剧,医疗服务需求日益增长,而陪诊服务作为医疗服务的重要补充,正逐渐受到人们的关注和青睐。陪诊小程序作为一种便捷、高效的陪诊服务平台,其市场潜力和发展趋势值得关注。 一、市场潜力分析 人…

Nerf的网络结构以及工作原理

NeRF(神经辐射场,Neural Radiance Fields)网络的原理基于体积渲染和深度学习的技术,用于从部分2D图像集生成复杂3D场景的新视图。 NeRF的核心思想是将连续场景表示为一个5D输入的神经辐射场。具体而言,它直接从空间位…

Ruby语言介绍要点难点代码案例参考实际应用举例

Ruby 是一种动态、面向对象的编程语言,最初由日本程序员松本行弘(Yukihiro Matsumoto)于1995年创建。它以简洁、优雅的语法著称,致力于提高开发者的生产力和乐趣。以下是关于 Ruby 的要点、难点、代码案例参考以及实际应用举例&am…