selenium学习

selenium模块和爬虫之间的关联

  • 便捷的获取网站中动态加载的数据
  • 便捷实现模拟登录

什么是selenium模块

基于浏览器自动化的一个模块

selenium使用流程:

复制代码
- 环境安装:pip install selenium
- 下载一个浏览器的驱动程序(谷歌浏览器)
    - 下载路径:http://chromedriver.storage.googleapis.com/index.html

资源绑定了Chrome116对应的chhromedriver.exe

selenium的操作代码:

  • 发起请求:get(url)
  • 标签定位:find_element(By.属性, value='') value是值
  • 标签交互:send_keys('xxx')
  • 执行js程序:excute_script('jsCode')
  • 前进、后退:back(), forward()
  • 关闭浏览器:quit()
python 复制代码
标签定位中By的属性有:
    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"
  • selenium处理iframe:
  • 如果定位的标签存在于iframe中,则表明是在标签页的一个子标签页中,必须使用switch_to.frame(id)
  • 动作链(拖动):from selenium.webdriver import ActionChains
    • 实例化一个动作链对象:action = ActionChains(bro)
    • click_and_hold(div):长按且点击操作
    • move_by_offset(x,y)
    • perform()让动作链立即执行
    • action.release()释放动作链对象

selenium的常用操作自动化

找到输入框

找到搜索按钮

python 复制代码
import time
from selenium import webdriver
from time import sleep
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By


service = Service(executable_path='./chromedriver.exe')
browser = webdriver.Chrome(service=service)
browser.get('https://www.taobao.com/')

# 标签定位
search_input = browser.find_element(By.ID, value='q')  # 通过id为q找到搜索框
# 标签交互
search_input.send_keys('iphone')     #发送字符串

# 执行一组js程序
browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
sleep(2)
# 点击搜索按钮
btn = browser.find_element(By.CSS_SELECTOR, '.btn-search')  #CSS_SELECTOR用法:   .classname:选择具有指定类名的元素。
btn.click()     # 点击按钮
sleep(5)

browser.get('https://www.baidu.com')
sleep(2)

# 回退
browser.back()
time.sleep(2)

# 前进
browser.forward()
sleep(2)

# 退出浏览器
browser.quit()

"""
By有的函数:
    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"
"""

04.动作链和iframe的处理.py

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

from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

service = Service(executable_path='./chromedriver.exe')
browser = webdriver.Chrome(service=service)
browser.get('https://www.runoob.com/try/try.php?filename=jqueryui-api-droppable')

# 如果定位的标签是存在于iframe标签之中的,则必须通过如下操作进行标签定位
browser.switch_to.frame('iframeResult')   # 切换浏览器标签定位的作用域 参数为iframe标签的id
div = browser.find_element(By.ID, 'draggable')

# 动作链
action = ActionChains(browser)
# 点击长按指定的标签
action.click_and_hold(div)
for i in range(5):
    # perform()立即执行动作链操作
    # move_by_offset(x, y): x:水平方向 y:垂直方向
    action.move_by_offset(18, 0).perform()
    sleep(.5)

# 释放动作链
action.release().perform()

sleep(5)
browser.quit()
相关推荐
码界奇点3 小时前
Python从0到100一站式学习路线图与实战指南
开发语言·python·学习·青少年编程·贴图
测试人社区-小明4 小时前
智能弹性伸缩算法在测试环境中的实践与验证
人工智能·测试工具·算法·机器学习·金融·机器人·量子计算
YJlio5 小时前
Active Directory 工具学习笔记(10.8):AdInsight——保存与导出(证据留存、共享与二次分析)
数据库·笔记·学习
噗噗夹的TA之旅8 小时前
Unity Shader 学习20:URP LitForwardPass PBR 解析
学习·unity·游戏引擎·图形渲染·技术美术
2401_834517078 小时前
AD学习笔记-36 gerber文件输出
笔记·学习
气π8 小时前
【JavaWeb】——(若依 + AI)-基础学习笔记
java·spring boot·笔记·学习·java-ee·mybatis·ruoyi
深蓝海拓8 小时前
PySide6从0开始学习的笔记(三) 布局管理器与尺寸策略
笔记·python·qt·学习·pyqt
暗然而日章8 小时前
C++基础:Stanford CS106L学习笔记 8 继承
c++·笔记·学习
2401_834517078 小时前
AD学习笔记-34 PCBlogo的添加
笔记·学习
被考核重击9 小时前
浏览器原理
前端·笔记·学习