当前位置: 首页 > news >正文

爬虫框架: selenium API使用介绍

文章目录

  • 一、背景
  • 二、selenium API使用
    • 1. 定位页面元素
    • 2. 查看对象的方法
    • 3. 查看节点文本内容
    • 4. 节点定位
      • 1)id定位
      • 2)name定位
      • 3)xpath定位
      • 4)**css 定位**
      • 5)文本定位
    • 5. 窗口大小控制
    • 6. 前后页面
    • 7. 刷新下当前页面
    • 8. 多窗口切换
    • 9. 输入框
    • 10. 按键操作
  • 三、参考资料

一、背景

selenium(硒) 作为化学元素有提升身体机能的作用,作为软件是一个自动化web测试框架,旨在提升工作效率,解放劳动力。selenium同时可以用作爬虫框架,使用python编写,传统的爬虫使用request请求html进行解析,但是对于一些ajax动态渲染的页面则没法直接抓取到内容,因此selenium提出一种模拟人的鼠标点击、滚动的动作,通过操控浏览器界面的形式完成测试。所以selenium需要安装浏览器的控制驱动,通常安装chrome 驱动。软件框架如下,本文进行讲解selenium中的API使用。

python
chromeDriver
chromeBrower

二、selenium API使用

1. 定位页面元素

以CSDN为例

from selenium import webdriver# Chrome浏览器
driver = webdriver.Chrome()
driver.get('https://www.csdn.net/')

浏览后自动退出, 不quit就不会退出。设置不自动退出:

# 不自动关闭浏览器
option = webdriver.ChromeOptions()
option.add_experimental_option("detach", True)# 将option作为参数添加到Chrome中
driver = webdriver.Chrome(chrome_options=option)

2. 查看对象的方法

selenium中有很多类和对象,想要查看对象有哪些方法可以使用dir命令。

print(dir(app))

3. 查看节点文本内容

print(app.text) : 查看节点的文本信息。

4. 节点定位

xml节点定位有多种方法,比如:id、name、xpath路径、css选择器、文本等方式。

1)id定位

driver.find_element_by_id("toolbar-search-input")

2)name定位

driver.find_element_by_name("keywords")

3)xpath定位

# 绝对路径(层级关系)定位
driver.find_element_by_xpath("/html/body/div/div/div/div[2]/div/div/input[1]")
# 利用元素属性定位
driver.find_element_by_xpath("//*[@id='toolbar-search-input']"))
# 层级+元素属性定位
driver.find_element_by_xpath("//div[@id='csdn-toolbar']/div/div/div[2]/div/div/input[1]")
# 逻辑运算符定位
driver.find_element_by_xpath("//*[@id='toolbar-search-input' and @autocomplete='off']")

4)css 定位

driver.find_element_by_css_selector('#toolbar-search-input')
driver.find_element_by_css_selector('html>body>div>div>div>div>div>div>input')

5)文本定位

link 专门用来定位文本链接,假如要定位下面这一标签。

<div class="practice-box" data-v-04f46969="">加入!每日一练</div>

我们使用 find_element_by_link_text 并指明标签内全部文本即可定位。

driver.find_element_by_link_text("加入!每日一练")

5. 窗口大小控制

1)设置窗口大小,在get步骤前后都可以设置窗口。

driver.set_window_size(600, 800)

2)全屏显示

driver.maximize_window()

6. 前后页面

1)可以在同一个标签页中多次get 页面,进入前后页面,而不是新的标签页。

from time import sleepdriver = webdriver.Chrome()# 访问CSDN首页
driver.get('https://www.csdn.net/')
sleep(2)
#访问CSDN个人主页
driver.get('https://blog.csdn.net/qq_43965708')
sleep(2)
#返回(后退)到CSDN首页
driver.back()
sleep(2)
#前进到个人主页
driver.forward()

2)在新的标签页中打开。 需要使用js脚本

# 新标签中打开
js = "window.open('https://blog.csdn.net/qq_43965708')"
driver.execute_script(js)

7. 刷新下当前页面

driver.refresh()

8. 多窗口切换

窗口是window对象,可以使用如下API进行切换。

# 获取打开的多个窗口句柄
windows = driver.window_handles
# 切换到当前最新打开的窗口 最后一个窗口
driver.switch_to.window(windows[-1])
# 切换到第一个窗口
driver.switch_to.window(windows[0])

9. 输入框

输入找到元素对象,然后send_keys(‘’),注意get 完 sleep几秒等待页面刷新再获取页面元素。

driver.get('https://www.csdn.net/')
sleep(2)
# 定位搜索输入框
text_label = driver.find_element_by_xpath('//*[@id="toolbar-search-input"]')# 在搜索框中输入 Dream丶Killer
text_label.send_keys('Dream丶Killer')sleep(2)
# 清除搜索框中的内容
text_label.clear()# 输出搜索框元素是否可见
print(text_label.is_displayed())
# 输出placeholder的值
print(text_label.get_attribute('placeholder'))# 定位搜索按钮
button = driver.find_element_by_xpath('//*[@id="toolbar-search-button"]/span')
# 输出按钮的大小
print(button.size)
# 输出按钮上的文本
print(button.text)'''输出内容
True
python面试100问
{'height': 32, 'width': 28}
搜索
'''

tips: browser对象中保存了整个网页内容,在brower.get时保存到成员属性中了。

10. 按键操作

按键对象的click方法模拟鼠标左击的动作。

playall_btn=browser.find_element_by_link_text('播放全部')
#print(browser.page_source)
playall_btn.click()

三、参考资料

https://zhuanlan.zhihu.com/p/480544218

https://pypi.org/project/selenium/

https://www.open-open.com/lib/view/open1413191207789.html

http://www.dtcms.com/a/441835.html

相关文章:

  • 淄博哪里做网站建设展示类网站的意义
  • NX482NX486美光固态闪存NX507NX508
  • 学校网站模板设计网络服务
  • Git常规应用
  • LeeCode504. 七进制数
  • 计算机网络物理层
  • 2025 最新 Docker 镜像源加速列表与使用指南(10月更新)
  • D3.js简介:用于定制数据可视化的JavaScript库
  • 数据可视化的陷阱:颜色、坐标轴、双轴图的误导性案例
  • 大数据Spark(六十六):Transformation转换算子sample、sortBy和sortByKey
  • 基于Python的招聘信息可视化分析系统
  • 深圳网站建设公司平台专业做曝光引流网站
  • LabVIEW超声换能器成像
  • 网站是否降权查询城市建设灯具网站
  • StatefulSet:有状态应用的“定海神针”
  • Go 语言的 panic 和 recover
  • Spring Cloud Netflix Eureka:从微服务基础到高可用集群实战
  • 网站建设 人天价格游戏制作软件免费下载
  • CSP-S2025复赛模拟4补题报告(无AC code)
  • 什么是Agent及其在人工智能中的角色
  • 爱授权系统V3.0免授权版 支持插件和插件商城
  • MySQL 本机压测分析
  • 华清远见25072班C++学习假期10.4作业
  • 建网站学什么软件全国医院的网站建设
  • 【深度学习计算机视觉】09:语义分割和数据集——应用场景与前沿探索
  • 【LeetCode热题100】No.1——两数之和(Java)
  • 系分论文《论边缘计算在工业质检系统中的分析与设计》
  • 利用 ArcMap 的 MXD 布局视图以及ArcPy 脚本实现批量自动生成油井点之记并导出 PDF(实操+亲测)
  • 计算机工作原理(简单介绍)
  • 自己如何建设网站聊天室做医药代表去什么招聘网站