python爬虫-selenium定位元素

系列文章目录

暂空



前言

Selenium 是一个用于自动化 web 应用程序测试的工具和框架,它直接运行在浏览器中,就像真正的用户在操作一样。
selenium常用于自动化测试,对于爬虫来说,因为原本的网络请求包(request等)在遇到如图片验证、输入框输入等情况时无法进行操作,所以有了selenium。
所以,我们简单看一下selenium是如何定位元素的。后续会更新其他操作。


一、环境准备

1.浏览器驱动安装

因为selenium是模拟用户操控浏览器,所以seleniu运行前需要先安装浏览器驱动。驱动的版本需要与自己浏览器的版本对应。这里以谷歌为例。
以下是下载地址:
国内常用网址:
谷歌驱动
如果找不到自己所需版本,则使用以下地址:
谷歌驱动

浏览器的驱动下载后是一个可执行文件:
在这里插入图片描述需要把下载后的驱动放在爬虫程序文件同级目录下,若不在同级目录则要在环境变量path内写入对应路径。

2.模块安装

使用pip工具安装selenium模块(或者conda),对应命令如下:

pip install selenium

如果下载速度过慢,可以尝试更换下载源。
在这里插入图片描述

3.在程序中导入模块包

要使用selenium模块包,需要先进行导入。selenium的相关方法都封装在webdriver下的类中。所以我们先需要根据自己浏览器和驱动的实际情况,创建出一个对应的对象。对应代码如下:

from selenium import webdriver
driver=webdriver.Chrome()

这里因为是要使用谷歌浏览器进行操作,所以使用Chrome()创建对象。后面我们就可以直接使用driver对象来使用selenium功能。

这里创建出对象后就可以使用selenium的功能,你可以控制页面跳转,打开新的页面等,但这里先不赘述,本篇文章主要介绍selenium中定位元素的方法。

二、定位元素

selenium是模拟用户操作页面元素的工具,想要操作元素,就先要找到要操作的元素。

1.ID定位

selenium可以使用dom元素的id属性来定位一个dom元素,这里的id属性是唯一的,各个元素之间不会重复。
假设有如下一个标签:

<input id=“toolbar-search-input” autocomplete=“off” type=“text” value=“” placeholder=“C++难在哪里?”>

则我们可以使用如下方法进行定位:

driver.find_element(by="id",value="toolbar-search-input")

2.name定位

name也是标签的属性之一,一般用于标识表单中的元素。我们也可以使用它定位元素。
假设有如下一个标签:

<meta name=“keywords” content=“CSDN博客,CSDN学院,CSDN论坛,CSDN直播”>

则可以用如下方法定位:

driver.find_element(by="name",value="keywords")

3.class定位

class也是html标签的属性之一,一般一个页面中会有多个同class的标签。这个时候就适合使用class定位来批量获取
比如有以下标签

<div class=“toolbar-search-container”>

则可以如下定位

driver.find_element(by="class name",value="toolbar-search-container")

但使用find_element方法只会返回匹配的第一个元素,对于class属性可以使用find_elements方法来获取所有匹配的元素。即:

driver.find_elements(by="class name",value="toolbar-search-container")

4.tag(标签定位)

tag定位也就是标签定位,通过标签名(比如div)定位元素。
但一个页面中的同类标签是非常多的,一般先使用其他定位法定义到外层元素缩小范围后,再使用tag来定位真正要用的元素。

driver.find_element_by_tag_name("div")

5.xpath定位

我们知道页面渲染出的元素,最终会形成一个dom树,各元素标签间层层嵌套。而xpath定位就是根据dom树来定位元素的方式。
我们可以直接在开发者工具中获取元素对应的xpath:
在这里插入图片描述
xpath规则
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.CSS定位

在编写前端程序时,最常用的定位方式——css,selenium中也是支持使用css来完成元素定位的.
比如以下是使用id选择器定位一个元素

driver.find_element(By.CSS_SELECTOR, '#id_value')

7.link定位

link定位法用于快速定位链接标签(<a\>),
可以根据链接内的内容来定位链接。
比如有以下标签:

<a class=“”">加入!每日一练</a>

则可以如下定位

driver.find_element(by="link text",value="加入!每日一练")

我们也可以使用prartical link定位,这让我们不用输入所有链接的内容,即

driver.find_element(by="partial link text",value="加入")

总结

我们简单介绍了一下selenium中定位元素的几种方法,这是我们使用selenium操控页面的前提。

  • 25
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值