Selenium实战指南:安装、使用技巧和JavaScript注入案例解析

背景

​ 最近一段时间我会重新开一个关于selenium的专题,由浅入深的给大家讲一下selenium,同时回顾一下之前学的内容,selenium可以实现模拟登录,动态数据获取,获取动态cookie等等,还有可以写一些抢p的脚本,点到为止,步入正题。

简介

  • selenium

​ - 是一种浏览器自动化的工具,所谓的自动化是指,我们可以通过代码的形式制定一系列的行为动作,然后执行代码,这些动作就会同步触发在浏览器中,即浏览器模拟人的执行。

环境安装:

py 复制代码
pip install  selenium
conda install selenium

如果大家chrome浏览器版本太高,又不好降级,建议大家看一下这篇博客:【笔记】chromedriver下载与安装方法_谷歌浏览器驱动_逸峰轻云的博客-CSDN博客

常用函数:

请求发送:

复制代码
driver.get("网站")  驱动打开一个网站
driver.quit()# 关闭浏览器
驱动创建:
  • Selenium支持非常多的浏览器,如Chrome、Firefox、Edge等.另外,也支持无界面浏览器。主要使用Chrome浏览器.
py 复制代码
driver = webdriver.Chrome(r'路径')  实例化一个浏览器对象
browser = webdriver.Firefox()
browser = webdriver.Edge()
browser = webdriver.PhantomJS()
browser = webdriver.Safari()
定位元素:
  • webdriver 提供了一系列的元素定位方法,常用的有以下几种:

复制代码
  driver.find_element_by_xpath() # 根据xpath对网页进行解析
  find_elements_by_link_text() # 根据超链接内容进行定位
  find_element_by_id(  ) # 根据标签id属性值定位
  find_element_by_tag_name() # 根据标签名定位
  find_element_by_name() # 根据其name属性值定位

​ 元素定位用的最多的是xpath那个,大家可以去学一下xpath的语法。

页面交互:

​ Selenium可以驱动浏览器来执行一些操作,也就是说可以让浏览器模拟执行一些动作。

复制代码
send_keys()#发送关键字
clear() # 清空文字
click() # 点击按钮
执行js:

​ 对于某些操作,Selenium API并没有提供。比如,下拉进度条,它可以直接模拟运行JavaScript,此时使用execute_script()方法即可实现。

复制代码
execute_script() #执行js
py 复制代码
# 拉到顶部
def scroll_top():
js = "var q=document.documentElement.scrollTop=0"
return d.execute_script(js)
py 复制代码
#拉到底部
window.scrollTo (0, document.body.scrollHeight)

案例实战:

效果展示1:
py 复制代码
from selenium import webdriver
from time import sleep

# 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的
# 路径写你下载的驱动的位置(建议使用相对路径)
driver = webdriver.Chrome(r'./chromedriver')
# 用get打开百度页面
driver.get("http://www.baidu.com")
# 等待三秒 观察效果
sleep(3)
# 关闭浏览器
driver.quit()
效果展示2:

​ 要求:实现输入python自动跳转到之后的页面

py 复制代码
from selenium import webdriver
from time import sleep

# 后面是你的浏览器驱动位置,记得前面加r'','r'是防止字符转义的
driver = webdriver.Chrome(r'D:\Downloads\xx\chromedriver-win64\chromedriver.exe')
# 用get打开百度页面
driver.get("http://www.baidu.com")
# 找到输入框
shuru=driver.find_element_by_id('kw')
shuru.send_keys("python")
# 输入关键字

sleep(3)
# # 找到确定按钮
button=driver.find_element_by_xpath('//*[@id="su"]')
button.click()

# sleep(3)

# # 关闭浏览器
# driver.quit()
效果展示3:

要求:对京东网站输入购买物品关键字后,同时注入js脚本滑倒最底部。

​ 要滑动网页到最低侧,你可以使用 JavaScript 中的 scrollTo 方法。以下是一个示例代码,可以在网页加载完成后自动滑动到最低侧:

js 复制代码
window.onload = function() {
  // 获取文档的高度
  var docHeight = document.documentElement.scrollHeight;
  
  // 滑动到最低侧
  window.scrollTo(0, docHeight);
    
};
js 复制代码
// 滑动到最顶部
window.scrollTo(0, 0);
py 复制代码
path = r'D:\Downloads\xx\chromedriver-win64\chromedriver.exe'

from selenium import webdriver
from time import sleep

# 创建一个浏览器对象,executable_path指定当前浏览器的驱动程序
bro = webdriver.Chrome(executable_path=path)

# 浏览器的请求发送
bro.get('https://www.jd.com/')

# 标签定位: 调用find系列的函数进行标签定位
search_box = bro.find_element_by_xpath('//*[@id="key"]')

# 节点交互
search_box.send_keys('Apple14')  # 向指定标签中录入内容
sleep(2)

btn = bro.find_element_by_xpath('//*[@id="search"]/div/div[2]/button/i')
btn.click()  # 点击按钮
sleep(2)

# 使用execute_script方法注入JavaScript代码,滑动到最底部
bro.execute_script('window.scrollTo(0, document.documentElement.scrollHeight)')
sleep(5)

# 关闭浏览器
bro.quit()
扩展:

扩展实现控制滑动的速度:

py 复制代码
path = r'D:\Downloads\xx\chromedriver-win64\chromedriver.exe'

from selenium import webdriver
from time import sleep

# 创建一个浏览器对象,executable_path指定当前浏览器的驱动程序
bro = webdriver.Chrome(executable_path=path)

# 浏览器的请求发送
bro.get('https://www.jd.com/')

# 标签定位: 调用find系列的函数进行标签定位
search_box = bro.find_element_by_xpath('//*[@id="key"]')

# 节点交互
search_box.send_keys('Apple14')  # 向指定标签中录入内容
sleep(2)

btn = bro.find_element_by_xpath('//*[@id="search"]/div/div[2]/button/i')
btn.click()  # 点击按钮
sleep(2)

# 获取页面高度
page_height = bro.execute_script('return document.documentElement.scrollHeight')

# 设置每次滑动的距离和间隔时间
scroll_distance = 200  # 每次滑动的距离
scroll_interval = 0.1  # 每次滑动的间隔时间(秒)

# 逐步滑动页面
current_height = 0  # 当前滑动的高度
while current_height < page_height:
    bro.execute_script(f'window.scrollBy(0, {scroll_distance});')  # 滑动指定距离
    sleep(scroll_interval)  # 等待一段时间
    current_height += scroll_distance  # 更新当前滑动的高度

# 关闭浏览器
bro.quit()

建议大家将这段代码保存下来,实现慢慢滑动

py 复制代码
# 获取页面高度
page_height = bro.execute_script('return document.documentElement.scrollHeight')

# 设置每次滑动的距离和间隔时间
scroll_distance = 200  # 每次滑动的距离
scroll_interval = 0.1  # 每次滑动的间隔时间(秒)

# 逐步滑动页面
current_height = 0  # 当前滑动的高度
while current_height < page_height:
    bro.execute_script(f'window.scrollBy(0, {scroll_distance});')  # 滑动指定距离
    sleep(scroll_interval)  # 等待一段时间
    current_height += scroll_distance  # 更新当前滑动的高度

今天的分享就到这里啦!!!

相关推荐
宸津-代码粉碎机4 分钟前
Java面试核心:JVM三大GC垃圾回收算法原理与生产场景落地分析
java·大数据·人工智能·python·spring
小静AI工程实验室11 分钟前
Codex 实用教程:Windows、macOS、Linux 安装配置到首个可验收项目
人工智能·python·开发工具·codex
黑马水牛27 分钟前
Carla仿真系列:17_利用Carla仿真环境跑通3DGS——从采集360张图到高斯泼溅建模
python·ros·colmap·3dgs·新视角合成·carla仿真·三维建图
赵大仁2 小时前
极空间 NAS 没有命令行,我逆向了它的桌面客户端
python·ai编程·nas·mcp·极空间
空白2 小时前
Power BI +VBA 【数据分析】
python
科技苑8 小时前
Python简单网络爬虫教程
爬虫·python
Patrick在香港11 小时前
Claude Prompt 香港场景:公文里「今日」落在 6 个日历日上,「翌日」锚错了 5 天
python·自然语言处理·正则表达式·claude·数据清洗
YsyaaabB12 小时前
Python 数值分析
python
阿洛学长12 小时前
计算机二级 Python 基本操作题(15 分)真题笔记(0101 ~ 1903 全套)
python·pycharm
weixin1997010801612 小时前
[特殊字符]️《二手ERP对接电商平台的总体方案:统一数据模型 + 事件驱动 + 灰度上线6原则》(附Python源码)
大数据·python