Wang's blog Wang's blog
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Wang Mings

跟随大神,成为大神!
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Python爬虫

    • 爬虫的基础知识

    • 请求的发送方法

    • 数据提取方法

    • 高性能爬虫

    • selenium

      • 无头浏览器的介绍
      • selenium的基本使用
      • selenium元素定位的方法
        • 元素定位的方法
          • 学习目标
          • 1 selenium的定位操作
          • 小结
      • selenium的其他方法
      • selenium案例
      • 小结
    • 反爬以及解决方案

    • MONGODB数据库

    • scrapy框架

    • scrapy_redis

    • 爬虫的部署

    • 爬虫框架开发分析

    • 框架雏形实现

    • 框架功能完善

    • 框架功能升级

    • 项目实战

    • pywin32介绍

  • 前端教程

  • 教程
  • Python爬虫
  • selenium
wangmings
2022-07-19
目录

selenium元素定位的方法

# 元素定位的方法

# 学习目标
  1. 掌握 selenium定位元素的方法
  2. 掌握 selenium从元素中获取文本和属性的方法

通过selenium的基本使用可以简单定位元素和获取对应的数据,接下来我们再来学习下 定位元素的其他方法

# 1 selenium的定位操作

定位元素语法:


find_element_by_id (返回一个元素)
find_elements_by_xpath (返回一个包含元素的列表)
find_elements_by_link_text (根据连接文本获取元素列表)
find_elements_by_partial_link_text (根据链接包含的文本获取元素列表)
find_elements_by_tag_name (根据标签名获取元素列表)
find_elements_by_class_name (根据类名获取元素列表)
 
1
2
3
4
5
6
7
8

注意:

find_element和find_elements的区别:多了个s就返回列表,没有s就返回匹配到的第一个 by_link_text和by_partial_link_tex的区别:全部文本和包含某个文本

  • 使用: 以豆瓣首页为例:https://www.douban.com/ (opens new window)
 from selenium import webdriver

  driver = webdriver.Chrome()

  driver.get("https://www.douban.com/")

  ret1 = driver.find_element_by_id("anony-nav")
  print(ret1)
  # 输出为:

  ret2 = driver.find_elements_by_id("anony-nav")
  print(ret2)
  #输出为:[]

  ret3 = driver.find_elements_by_xpath("//*[@id='anony-nav']/h1/a")
  print(len(ret3))
   #输出为:1

  ret4 = driver.find_elements_by_tag_name("h1")
  print(len(ret4))
   #输出为:1

  ret5 = driver.find_elements_by_link_text("下载豆瓣 App")
  print(len(ret5))
   #输出为:1

  ret6 = driver.find_elements_by_partial_link_text("豆瓣")
  print(len(ret6))
   #输出为:24

  driver.close() 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
  • 获取数据语法

    • find_element仅仅能够获取元素,不能够直接获取其中的数据,如果需要获取数据需要使用以下方法:
      • 获取文本:element.text
      • 获取属性值:element.get_attribute("href")
  • 使用示例:
from selenium import webdriver

driver =webdriver.Chrome()

driver.get("https://www.douban.com/")

ret7 = driver.find_elements_by_tag_name("h1")
print(ret7[0].text)
#输出:豆瓣

ret8 = driver.find_elements_by_link_text("下载豆瓣 App")
print(ret8[0].get_attribute("href"))
#输出:https://www.douban.com/doubanapp/app?channel=nimingye

driver.close() 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# 小结

  1. 根据xpath定位元素:driver.find_elements_by_xpath("//*[@id='s']/h1/a")
  2. 根据class定位元素:driver.find_elements_by_class_name("box")
  3. 根据link_text定位元素:driver.find_elements_by_link_text("下载豆瓣 App")
  4. 根据tag_name定位元素:driver.find_elements_by_tag_name("h1")
  5. 获取文本内容:element.text
  6. 获取标签属性: element.get_attribute("href")
编辑 (opens new window)
selenium的基本使用
selenium的其他方法

← selenium的基本使用 selenium的其他方法→

最近更新
01
theme-vdoing-blog博客静态编译问题
09-16
02
搜索引擎
07-19
03
友情链接
07-19
更多文章>
Theme by Vdoing | Copyright © 2019-2022 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式