selenium-XPATH以及CSS的便捷使用,源码解析

这篇具有很好参考价值的文章主要介绍了selenium-XPATH以及CSS的便捷使用,源码解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

如何去定位页面上动态加载动态变化的元素?

正文

xpath实用的元素定位方法

CSS实用的元素定位方法

总结


css 和 xpath 定位各自优缺点?

====================

xpath :是 XML 文档中查找结点的语法,换句话就是通过元素的路径来查找这个元素。他分绝对路径和相对路径,xpath 比较强大,所有元素它都能定位到,但是他定位相对比较慢,

css 选择器 :在性能上更优,运行速度更快,语法上更简洁。

Xpath能通过子元素搜索父元素, Css无法实现,Css只能从父级往下级搜索。

Xpath能按文本搜索元素,Css不能。

Css比Xpath更简单易读,执行速度更快

篇外话

===

如何定位一组元素?


以百度为例:

selenium-XPATH以及CSS的便捷使用,源码解析,2024年程序员学习,selenium,css,tensorflow

from selenium import webdriver

fox = webdriver.Firefox()

fox.get(‘https://baidu.com’)

s = fox.find_elements_by_class_name(‘mnav’)

for i in s:

print(i.get_attribute(‘href’))

fox.quit()

看图,我标注了数字,为什么要标注数字,跑了看结果就知道了。

http://news.baidu.com/

https://www.hao123.com/

http://map.baidu.com/

http://tieba.baidu.com/

https://haokan.baidu.com/?sfrom=baidu-top

http://image.baidu.com/

https://pan.baidu.com/?from=1026962h

None

得出的结果是这样的。为什么会有一个None值呢,看到了我标注的黄色框了吗,元素也是mnav开头的,这里是模糊匹配,所以黄色框中的div也输出了,它又没有href,所以为None。

.get_attribute(‘href’)获取元素的给定属性或属性,它将返回具有相同名称的属性的值,我需要获取href属性对应的值,所以说,输出了一个个链接。

如何定位父子/兄弟/相邻节点的定位元素?


这里做了解就好

父->子

selenium-XPATH以及CSS的便捷使用,源码解析,2024年程序员学习,selenium,css,tensorflow

串联查找,这一项可以理解为父级元素的基础上直接查找所需的子元素。当元素定位不到的时候可以尝试此方法,不过比较的笨拙,但是实在。

from selenium import webdriver

fox = webdriver.Firefox()

fox.get(‘http://39.98.138.157/shopxo/public/index.php?s=/index/user/logininfo.html’)

ele = fox.find_element_by_class_name(‘am-u-sm-12.am-u-md-6.am-u-lg-4.container-right’).find_element_by_link_text(‘忘记密码?’).text

print(ele)

fox.quit()

子->父

selenium-XPATH以及CSS的便捷使用,源码解析,2024年程序员学习,selenium,css,tensorflow

find_element_by_xpath(‘//div[@id=’u’]/…/…’)

这里就是子元素先定位到父元素再定位到父元素的父元素

如何二次定位元素?


这里的二次定位其实就是串联查找,所以,这里看上面的父级>子元素的查找即可

如何去定位页面上动态加载动态变化的元素?


这里介绍三种方法,解决你对定位的困扰。

contains(a, b) 如果 a 中含有字符串 b,则返回 true,否则返回 false(包含什么)

starts-with(a, b) 如果 a 是以字符串 b 开头,返回 true,否则返回 false(以什么开始)

ends-with(a, b) 如果 a 是以字符串 b 结尾,返回 true,否则返回 false(以什么结束)

driver.find_element_by_xpath (“//div[contains(@id, ‘accounts’)]”)

selenium-XPATH以及CSS的便捷使用,源码解析,2024年程序员学习,selenium,css,tensorflow

感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
selenium-XPATH以及CSS的便捷使用,源码解析,2024年程序员学习,selenium,css,tensorflow

技术停滞不前!**

因此收集整理了一份《2024年Python爬虫全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:python)
[外链图片转存中…(img-NwWlL3vU-1711202723979)]文章来源地址https://www.toymoban.com/news/detail-851166.html

到了这里,关于selenium-XPATH以及CSS的便捷使用,源码解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 为了这口醋,包的这饺子。为了Selenium,学有限的CSS,逐步替换XPATH

    In order for Selenium to click on an element, type into it, or mouse in or out, the tool first needs to find the element. The WebDriver code library provides methods to do just that, such as findelement() findelements(). These usually take a locator , which can be created by ID, XPATH Code, or Cascading Style Sheets (CSS) . Getting the XPATH code can be as e

    2024年01月21日
    浏览(45)
  • 用selenium和xpath定位元素并获取属性值以及str字符型转json型

    页面html如图所示: 要使用xpath定位这个div元素,并且获取其属性data-config的内容值。  结果如图:  蓝色的为str类型,红色的为json类型。 那么先得到的是str类型,如何转换为json类型呢?使用如下代码即可。 import json json_attr=json.loads(str_attr) 读取json数据用json_attr[\\\'video\\\'][\\\'url\\\'

    2024年02月08日
    浏览(39)
  • Selenium使用xpath定位元素

    参考资料: 【web自动化测试】xpath元素定位 接下来是使用 xpath 必须掌握的核心知识点,只要掌握好这些知识点,基本上能定义到想要的元素。 // 开头表示相对路径, 也可以用 / 开头表示绝对路径,一般用相对路径。 [] 内表示属性条件 [@name=‘accout’] 表示获取name属性等于

    2023年04月08日
    浏览(53)
  • selenium XPATH 使用简单例子

    定位所有的 a 元素: //a 定位带有特定id属性的元素: //*[@id=“exampleId”] 定位带有特定class属性的元素: //*[contains(@class, “exampleClass”)] 定位包含特定文本的元素: //*[text()=“Example Text”] 定位包含特定部分文本的元素: //*[contains(text(), “Partial Text”)] 定位第一个 元素: /

    2024年02月21日
    浏览(45)
  • 爬虫便捷操作之selenium使用技巧

    在爬虫中占据比较重要的地位 是一种浏览器自动化的工具,所谓的自动化是指,我们可以通过代码的形式制定一系列的行为动作,然后执行代码,这些动作就会同步触发在浏览器中。 我们在抓取一些普通网页的时候requests基本上是可以满足的. 但是, 如果遇到一些特殊的网站

    2024年02月03日
    浏览(48)
  • python selenium的xpath的使用

    2024年02月12日
    浏览(42)
  • 网络爬虫(二)——Xpath和Selenium的使用

    虽然正则表达式处理字符串的能力很强,但是在编写正则表达式的时候代码还是比较麻烦的,如果不小心写错一处,那么将无法匹配页面中所需要的数据,因为网页中包含大量的节点,而节点中又包含id、class等属性。如果在解析页面中的数据时,通过Xpath来定位网页中的数据

    2024年02月03日
    浏览(44)
  • python+selenium使用xpath定位的问题

    python用selenium调chrome爬取网页信息遇到报错: 1.InvalidSelectorException: Message: invalid selector: The result of the xpath expression is [object Attr]. It should be an element 原因是selenium不支持从xpath中直接获取text文本信息。 xpath表达式修改为: 2.Message: no such element: Unable to locate element: xpath表达式一直

    2024年02月12日
    浏览(44)
  • selenium使用XPATH提取内容报错(已解决)

    目录 一、说明 1.1、前言 1.2、报错信息 1.3、报错代码 二、解决 2.1、搜索引擎解决 2.2、最终解决 背景:使用selenium,获取招工平台岗位要求与待遇信息出现报错 环境:windows 10家庭版 语言:python 3 模块:selenium 出现的问题: selenium.common.exceptions.StaleElementReferenceException: Messa

    2024年02月09日
    浏览(38)
  • selenium其他操作/xpath使用/动作链/打码平台

    # 页面中定位元素(标签),两种通用方式     -css选择器     -xpath:XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言           # xpath语法     div    选取div标签     /    从根节点选取     //    从匹配选择的当前节点选择文档中的节

    2024年02月15日
    浏览(564)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包