Spider学习笔记(一):xpath基础操作

# XPath
XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,有不同类型的节点,包括元素节点,属性节点和文本节点,提供在数据结构树中找寻节点的能力。

# 什么是 XPath?
- XPath 使用路径表达式在 XML 文档中进行导航
- XPath 包含一个标准函数库
- XPath 是 XSLT 中的主要元素
- XPath 是一个 W3C 标准

xpath基础操作样例(使用xpath打印的都是列表)

import lxml
from lxml import etree


html = '''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<div>
    <ul class="ul">
        <li class="li">1</li>
        <li id="li2">2</li>
        <li class="li">3</li>
        <li class="li">1</li>
        <li id="li5">2</li>
        <li class="li">3</li>
    </ul>
</div>

<ul class="ul">
        <li class="li">1</li>
        <li id="li2">2</li>
        <li class="li">3</li>
</ul>

<p class="ul"></p>
</body>
</html>
'''
# mytree = lxml.etree.parse('./xpath.html')

mytree = lxml.etree.HTML(html)

print(mytree)
# / 从根开始
print(mytree.xpath('/html/head/title/text()'))

# // 所有
print(mytree.xpath('/html/body/div/ul'))
print(mytree.xpath('//ul'))

# . 当前
ul = mytree.xpath('//ul')[0]

li = ul.xpath('./li')
print(li)


# 谓语

li2 = mytree.xpath('//li[@id="li2"]')
for l in li2:
    print(l.text)
    print(l.xpath('./text()'))


l3 = mytree.xpath('//div//li[3]/text()')
print(l3)

# last() first()
li3 = mytree.xpath('//div//li[last()]/text()')
print(li3, '===')


# 倒数第二个
print(mytree.xpath('//div//li[last()-1]/text()'), '----')
# 从第三个li开始

# position()定位 < > = >= <= !=
print(mytree.xpath('//div//li[position() != 2]'))

# 所有class=ul  | 或
print(mytree.xpath('//ul[@class="ul"] | //p[@class="ul"]'),'*****')
print(mytree.xpath('//*[@class="ul"]'))

猜你喜欢

转载自blog.csdn.net/xiaohuoche175/article/details/81746125
今日推荐