xpath的学习以及语法
迪丽瓦拉
2025-06-01 04:01:20
0次

1、发送请求
2、响应的解析
3、爬数据、保存数据


xpath
bs4
re(正则表达式)
在这里插入图片描述


xpath是在xml和html文档中找到信息的语言,可用在xml和html文档对元素和属性进行遍历
按照一定的规则进行数据的获取


用css选择web元素麻烦,xpath非常简单
**

绝对路径的选择

自动化程序使用的是xpath来选择web元素,

driver.find_elements_by_xpath("/html/body/div")

相对路径的选择

无论在哪里都能够找得到
要选择 所有的 div 元素里面的 所有的 p 元素 ,不管div 在什么位置,也不管p元素在div下面的什么位置,则可以这样写 //div//p

elements = driver.find_elements_by_xpath("//div//p")

如果要用css,那么代码就是下面的

elements = driver.find_elements_by_css_selector("div p")

xpath方法中div的直接子节点,就是

//div/p

css选择器的话,

div>p

通配符

如果想要选择div节点中的所有的直接子节点,可以使用

//div/*

,*是一个通配符,
对应css

  div> *

根据属性选择

[@属性名=‘属性值’]
根据id
//[@id=‘west’]
根据class
//select[@class=‘capital huge-city’]
根据其他的属性
//[multiple]
属性包含字符串
要选择 style属性值 包含 color 字符串的 页面元素 ,可以这样 //
[contains(@style,’color’)]
要选择 style属性值 以 color 字符串 开头 的 页面元素 ,可以这样 //[starts-with(@style,’color’)]
要选择 style属性值 以 某个 字符串 结尾 的 页面元素 ,大家可以推测是 //
[ends-with(@style,’color’)], 但是,很遗憾,这是xpath 2.0 的语法 ,目前浏览器都不支持
按照次序
//div/p[2]
可以选择父元素为div中的p类型第二个子元素
第几个子元素
//div/[2]
某类型倒数第几个子元素
//p[last()]
//p[last()-1]
//div/p[last()-2]
范围的选择
//option[position()<2]
选择class属性为multi_choice的前3个子元素
//
[@class=‘multi_choice’]/[position()<=3]
选择class属性为multi_choice的后3个子元素
//
[@class=‘multi_choice’]/*[position()>last()-2]
为什么不是 last()-3 呢? 因为

last() 本身代表最后一个元素
last()-1 本身代表倒数第2个元素
last()-2 本身代表倒数第3个元素
组选择、父节点、兄弟节点
xpath也有组选择, 是用 竖线 隔开多个表达式, 比如,要选所有的option元素 和所有的 h4 元素,可以使用
//option | //h4 等同于CSS选择器 option , h4

//[@class=‘single_choice’] | //[@class=‘multi_choice’] 等同于CSS选择器 .single_choice , .multi_choice

选择父节点
xpath可以选择父节点, 这是css做不到的。某个元素的父节点用 /… 表示, 比如,要选择 id 为 china 的节点的父节点,可以这样写 //[@id=‘china’]/… 。
当某个元素没有特征可以直接选择,但是它有子节点有特征, 就可以采用这种方法,先选择子节点,再指定父节点。
还可以继续找上层父节点,比如 //
[@id=‘china’]/…/…/…
兄弟节点选择
前面学过 css选择器,要选择某个节点的后续兄弟节点,用 波浪线, xpath也可以选择 后续 兄弟节点,用这样的语法 following-sibling::
比如,要选择 class 为 single_choice 的元素的所有后续兄弟节点 //[@class=’single_choice’]/following-sibling::, 等同于CSS选择器 .single_choice ~ *
如果,要选择后续节点中的div节点, 就应该这样写 //*[@class=‘single_choice’]/following-sibling::div
xpath还可以选择 前面的 兄弟节点,用这样的语法 preceding-sibling::
比如,要选择 class 为 single_choice 的元素的所有前面的兄弟节点 //[@class=’single_choice’]/preceding-sibling::
而CSS选择器目前还没有方法选择前面的 兄弟节点
要了解更多Xpath选择语法,可以点击这里,打开Xpath选择器参考手册: http://www.w3school.com.cn/xpath/index.asp

相关内容

热门资讯

AI做攻略、“双向奔赴”……国... 本文转自:人民网人民网记者 许维娜今年国庆假期,AI(人工智能)成了不少年轻人的“旅行搭子”。行前做...
合肥的这个“梗”, 翻篇了 社交平台的评论区,曾长期流传一句专属于合肥的黑色幽默。有人问合肥哪里好玩,本地网友半开玩笑地回复:合...
7万+旅游中高层都在的群,今天... 做旅游这行,资源卡位、渠道互通、项目落地——往往就差一个“对的机会”。我们的行业社群已聚集70,00...
一场帐篷音乐节,如何让井研从“... 帐篷音乐节现场封面新闻记者 周洪攀10月的研溪湿地,晚风里裹着柑橘的清甜与民谣的回响。夜幕降临,10...
白鹤翩翩落星愿,上海迪士尼度假... 10月9日,世界候鸟日前夕,上海迪士尼度假区星愿公园的湖风里多了一分白鹤的灵动。三座白鹤雕塑正式揭幕...
成都锦江边赏初秋枫叶飘飘 目前,成都锦江边国华街枫叶树红了。近年来,国华街附近的几条街都栽种了红枫树,是城区较集中看枫叶的点位...
GBTA:商务旅行正在复苏,但... 亚太正在成为全球商务旅行增长的重要引擎。在经历疫情后的快速反弹之后,全球商务旅行正在进入一个新的增长...
从景区焕新到节赛引流 邹城双节... 齐鲁网·闪电新闻10月9日讯 中秋、国庆“双节”假期,邹城市文化和旅游局提前谋划、周密部署,立足自身...
江山如此多娇 且看石楼今朝 金秋十月,黄河岸畔秋意盎然,丰收盛会喜迎国庆。本次石楼国庆文旅活动以“江山如此多娇,且看石楼今朝”为...
海南国庆假期接待游客475.4... 2026年国庆假期,海南接待游客475.40万人次,较2025年增长13.1%,较2024年增长15...