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()
相关推荐
Broken Arrows1 小时前
Linux学习——管理网络安全(二十一)
linux·学习·web安全
今天也要学习吖1 小时前
谷歌nano banana官方Prompt模板发布,解锁六大图像生成风格
人工智能·学习·ai·prompt·nano banana·谷歌ai
雁于飞1 小时前
vscode中使用git、githup的基操
笔记·git·vscode·学习·elasticsearch·gitee·github
rannn_1112 小时前
【Javaweb学习|实训总结|Week1】html基础,CSS(选择器、常用样式、盒子模型、弹性盒布局、CSS定位、动画),js(基本类型、运算符典例)
css·笔记·学习·html
wanzhong23334 小时前
ArcGIS学习-20 实战-地形研究
学习
wanzhong23334 小时前
ArcGIS学习-20 实战-县域水文分析
学习·arcgis
小马学嵌入式~4 小时前
嵌入式 SQLite 数据库开发笔记
linux·c语言·数据库·笔记·sql·学习·sqlite
索迪迈科技4 小时前
java后端工程师进修ing(研一版 || day40)
java·开发语言·学习·算法
武文斌775 小时前
arm启动代码总结
arm开发·嵌入式硬件·学习
我怕是好5 小时前
学习stm32 蓝牙
stm32·嵌入式硬件·学习