首页 > 其他分享 >xpath

xpath

时间:2024-03-31 17:12:22浏览次数:20  
标签:xpath title 元素 选取 ul 节点

xpath

(1)介绍

  • 可在XML中查找信息
  • 支持HTML的查找
  • 通过元素和属性进行导航
pip install lxml
from lxml import etree

# 将源码转化为能被XPath匹配的格式
selector = etree.HTML(源码) 

# 返回为一列表
res = selector.xpath(表达式)

(2)使用

(1)路径表达式

表达式 描述 实例 解析
/ 从根节点选取 /body/div[1] 选取根结点下的body下的第一个div标签
// 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置 //a 选取文档中所有的a标签
./ 当前节点再次进行xpath ./a 选取当前节点下的所有a标签
@ 选取属性 //@calss 选取所有的class属性
  • 直接使用xpath语法查询出来的是Element对象,所以要使用for循环继续xpath
  • text()获取标签中的文本值
from lxml import etree

html_doc = """
<html><head><title>The Dormouse's story</title></head>
<body>
<p class="title"><b>The Dormouse's story</b></p>

<p class="story">Once upon a time there were three little sisters; and their names were
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a> and
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>;
and they lived at the bottom of a well.</p>

<p class="story">...</p>
"""

selector = etree.HTML(html_doc)
res = selector.xpath("//a")

print(res)  # [<Element a at 0x2155de71640>, <Element a at 0x2155e3976c0>, <Element a at 0x2155e397800>]

for result in res:
    href = result.xpath('./@href')
    href1 = result.xpath('./@href')[0]  # 获取标签里的href值
    href2 = result.xpath('./text()')[0]  # 获取标签里的文本值

    print(href)
    # ['http://example.com/elsie'] ['http://example.com/lacie'] ['http://example.com/tillie']

    print(href1)
    # http://example.com/elsie http://example.com/lacie http://example.com/tillie

    print(href2)
    # Elsie Lacie Tillie

(2)谓语

  • 谓语用来查找某个特定的节点或者包含某个指定的值的节点。
  • 谓语被嵌在方括号中。
  • 在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:
路径表达式 结果
/ul/li[1] 选取属于 ul子元素的第一个 li元素。
/ul/li[last()] 选取属于 ul子元素的最后一个 li元素。
/ul/li[last()-1] 选取属于 ul子元素的倒数第二个 li元素。
//ul/li[position()❤️] 选取最前面的两个属于 ul元素的子元素的 li元素。
//a[@title] 选取所有拥有名为 title的属性的 a元素。
//a[@title='xx'] 选取所有 a元素,且这些元素拥有值为 xx的 title属性。
//a[@title>10] > < >= <= != 选取 a元素的所有 title元素,且其中的 title元素的值须大于 10。
/body/div[@price>35.00] 选取body下price元素值大于35的div节点

(3)选取未知节点

【1】语法

  • XPath 通配符可用来选取未知的 XML 元素。
通配符 描述
* 匹配任何元素节点。
@* 匹配任何属性节点。
node() 匹配任何类型的节点。

【2】实例

  • 在下面的表格中,我们列出了一些路径表达式,以及这些表达式的结果:
路径表达式 结果
/ul/* 选取 bookstore 元素的所有子元素。
//* 选取文档中的所有元素。
//title[@*] 选取所有带有属性的 title 元素。
//node() 获取所有节点

(4)模糊查询

//div[contains(@id, "he")] 

标签:xpath,title,元素,选取,ul,节点
From: https://www.cnblogs.com/ssrheart/p/18106943

相关文章

  • 初始xpath
    包的安装pipinstalllxml谷歌浏览器插件安装XPathHelper可以自行搜索安装也可以点击:传送门解析流程与使用实例化一个etree的对象,把即将被解析的页面源码加载到该对象。调用该对象的xpath方法结合着不同形式的xpath表达式进行标签定位和数据提取#导入lxml.etree......
  • XPath攻略:从入门到精通,元素查找不再难
    简介XPath是一种用于在XML文档中检索信息的语言。它通过路径表达式导航XML文档,广泛应用于各种场景。XPath的灵活性和强大功能使其成为在XML结构中准确定位和提取数据的重要工具。XPath使用场景Web自动化测试:XPath在Web自动化测试中广泛应用,XPath提供了一种强大......
  • 最详细爬虫零基础教程11——html格式提取之xpath
    文章目录一、html和xml二、xpath获取节点属性三、xpath语法四、案例展示总结一、html和xmllxml是一款高性能的PythonHTML/XML解析器,我们可以利用XPath,来快速的定位特定元素以及获取节点信息。区别:1.xml被设计为传输和存储数据,其焦点是数据的内容2.html是显示......
  • XPath定位如何在App自动化测试中大显神威
    简介和selenium类似,作为App自动化测试的主流框架,appium也是以webdriver为基础来自动化操作App的,所以对于元素定位,其实appium与selenium也是类似的,只是appium还有自己的安卓原生定位方式等方法,但是关于ID定位,name定位,xpath定位等,appium也是支持的,本篇文章就来给大家介绍一下xpath......
  • xpath和contains模糊匹配
    来源:https://www.cnblogs.com/kaibindirver/p/12072546.html最近在弄数据爬取,研究了下xpath,也参考了很多文章,这篇总结不错,就直接复制过来了。xpath可以以标签定位,也可以@任意属性:如:以input标签定位:driver.find_element_by_xpath("//input[@id='kw']")如:@type属性:driver.find_......
  • 数据爬取与可视化技术——urllib、XPath、lxml案例爬取新浪股票吧
    shy:数据爬取与可视化技术系列已发文三篇了,更多爬虫技术请查看专栏文章。数据爬取与可视化技术——使用urllib库爬取网页获取数据数据爬取与可视化技术——使用XPath和lxml库爬取、解析、提取数据shy:现已开辟专栏四个:C++、ACM、数据库系统概论、数据爬取与可视化技术,更多......
  • 【笔记】Python爬虫之Xpath、BS4解析
    1、Bs4解析#安装bs4importrequestsfrombs4importBeautifulSoup#1url=""resp=requests.get(url)#2.将请求到的数据变成BeautifulSoup对象sp=BeautifulSoup(resp.text,'lxml')#↑加.text↑固定lxml#————————————————......
  • python得scrapy提取数据 xpath注意事项
    在提取器过滤数据这个地方被坑了很久,确实有点坑,有点难以理解,多注意下就可以了。frommultiprocessingimportallow_connection_picklingfromscrapy.spidersimportSpiderfrom..itemsimportCnblogshaha01ItemclasscnblogSpider(Spider):name="cnblogsHAHA01"#定......
  • xpath
    笔记xpath解析原理:-数据解析原理:-1.实例化一个etree对象,且将页面源码数据加载到该对象中-2.调用etree对象中xpath方法,编写xpath表达式,提取数据-环境安装:-pipinstalllxml-实例化一个etree对象:fromlxmlimportetree-......
  • xpath寻找标签
    语法格式如下1标签名#找xml中所有这个标签2/#只找一层3//#子子孙孙都会找4.#从当前路径下5..#上一层6@属性名#找有这个属性的标签数据准备doc='''<html><head><basehref='http://example.com/'/><title>Examplew......