Xpath解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 爬虫系列文章

xpath解析

  • html标签结构

    • 是一个树状的结构
  • xpath解析原理

    • 实例化一个etree对象,且将即将被解析的数据加载到该对象中

      • 解析本地存储的html文档:

        • etree.parse('fileName')
      • 解析网上爬取的html数据:

        • etree.HTML(page_text)
    • 使用etree对象中的xpath方法结合着不同的xpath表达式实现标签定位和数据提取

xpath表达式

  • 标签定位

    • 最左侧的/:必须要从根标签开始逐层的定位目标标签
    • 非最最侧的/:表示一个层级
    • 最左侧的//:可以从任意位置定义目标标签
    • 非最左侧的//:表示多个层级
    • 属性定位://tagName[@attrName='value']
    • 索引定位://tagName[index],index索引是从1开始
    • 模糊匹配:

      • //div[contains(@class, "ng")] 定位到class属性值中包含ng的div标签
      • //div[starts-with(@class, "ta")] 定位到class属性值中是以ta开头的div标签
  • 数据提取

    • 取标签中的数据

      • /text():直系文本内容
      • //text():所有的文本内容
    • 取属性的数据

      • tagName/@attrName
from lxml import etree

In [35]:

tree = etree.parse('./test.html')#将本地存储的html文档进行解析
tree

Out[35]:

<lxml.etree._ElementTree at 0x10af51508>

In [38]:

tree.xpath('/html/head')#从根标签开始定位head标签
tree.xpath('//head') #将html文档中所有的head标签定位到

Out[38]:

[]

In [40]:

tree.xpath('/html//meta')

Out[40]:

[<Element meta at 0x10d9d2e88>]

In [43]:

#定位class为song的div标签
tree.xpath('//div[@class="song"]')

Out[43]:

[<Element div at 0x10d9cca88>]

In [49]:

tree.xpath('//li[1]')

Out[49]:

[<Element li at 0x10dcb8708>]

In [52]:

tree.xpath('//a[@id="feng"]/text()')

Out[52]:

['凤凰台上凤凰游,凤去台空江自流,吴宫花草埋幽径,晋代衣冠成古丘']

In [54]:

tree.xpath('//div[@class="song"]//text()')

Out[54]:

['\n\t\t',
 '李清照',
 '\n\t\t',
 '王安石',
 '\n\t\t',
 '苏轼',
 '\n\t\t',
 '柳宗元',
 '\n\t\t',
 '\n\t\t\t',
 'this is span',
 '\n\t\t宋朝是最强大的王朝,不是军队的强大,而是经济很强大,国民都很有钱',
 '\n\t\t',
 '总为浮云能蔽日,长安不见使人愁',
 '\n\t\t',
 '\n\t']

In [56]:

tree.xpath('//a[@id="feng"]/@href')

Out[56]:

['http://www.haha.com']
相关文章
|
12月前
|
开发者
数据解析之Xpath解析(超详细定位)2
数据解析之Xpath解析(超详细定位)2
68 0
|
3月前
|
XML 数据格式 Python
Python使用xpath对解析内容进行数据提取
在前面的文章当中,已经教大家如何去获取我们需要的数据原文内容,今天就介绍一个用于提取所需数据的方法之一xpath。在后续会讲解bs4(beautifulsoup),re正则表达式。
|
3月前
|
XML 数据格式 Python
Python使用xpath对解析内容进行数据提取
今天就介绍一个用于提取所需数据的方法之一xpath。在后续会讲解bs4(beautifulsoup),re正则表达式。
|
3月前
|
XML Web App开发 JavaScript
解析神器Xpath详解+实战
解析神器Xpath详解+实战
|
10月前
|
索引 Python
【Python】数据解析—Xpath解析
【Python】数据解析—Xpath解析
52 0
|
12月前
|
XML 数据格式 开发者
数据解析之Xpath解析(超详细定位)1
数据解析之Xpath解析(超详细定位)1
227 0
|
XML 数据采集 测试技术
四、探索Xpath:解析Web页面的利器
四、探索Xpath:解析Web页面的利器
|
数据采集 JSON API
使用Python和XPath解析动态JSON数据
使用Python和XPath解析动态JSON数据
|
前端开发 JavaScript UED
使用XPath与CSS选择器相结合的高效CSS页面解析方法
使用XPath与CSS选择器相结合的高效CSS页面解析方法
|
XML 数据格式 Python
Python高阶教程——Xpath解析
Xpath简介 XPath是一种用于在XML文档中定位节点的语言,它可以用于从XML文档中提取数据,以及在XML文档中进行搜索和过滤操作。它是W3C标准的一部分,被广泛应用于XML文档的处理和分析。 XPath使用路径表达式来描述节点的位置,这些路径表达式类似于文件系统中的路径。路径表达式由一个或多个步骤(step)组成,每个步骤描述了一个节点或一组节点。步骤可以使用关系运算符(如/和//)来连接,以便描述更复杂的节点位置。 XPath还提供了一些内置函数和运算符,可以对XML文档中的数据进行操作和计算。例如,可以使用XPath的数学函数来计算节点的数值,或使用字符串函数来处理节点的文本内
390 0

热门文章

最新文章

推荐镜像

更多