Python爬虫之xpath用法全解析

Python爬虫之xpath用法全解析本篇文章不介绍 xpath 库的安装和原理 只归纳总结 xpath 的所有用法一 基本规则 1 常用表达式规则 2 多属性匹配运算符介绍二 基本用法 1

欢迎大家来到IT世界,在知识的湖畔探索吧!

Python爬虫之xpath用法全解析



欢迎大家来到IT世界,在知识的湖畔探索吧!

本篇文章不介绍xpath库的安装和原理,只归纳总结xpath的所有用法

一、基本规则

1. 常用表达式规则

Python爬虫之xpath用法全解析

2. 多属性匹配运算符介绍

Python爬虫之xpath用法全解析

二、基本用法

1. 初始化对象

html_doc = “””

<html>

<head><title>The Dormouse’s story</title></head>

<body>

<p class=”title”><b>The Dormouse’s story</b></p>

<ul class=”list” id=”list-1″>

<li class=”element”><a href=”http://example.com/elsie” class=”sister” id=”link1″>Elsie</a>Foo</li>

<li class=”element”>Bar</li>

<li class=”element”>Jay</li>

</ul>

<ul class=”list two” id=”list-2″>

<li class=”element”><a href=”http://example.com/tillie” class=”parent” id=”link3″>Tillie</a>evan</li>

<li class=”element”>jane</li>

<li class=”element”>summer</li>

</ul>

<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=”child” id=”link2″>Lacie</a> and

<a href=”http://example.com/tillie” class=”parent” id=”link3″>Tillie</a>;

and they lived at the bottom of a well.</p>

<p class=”story”>End…</p>

</body>

</html>

“””

html = etree.HTML(html_doc ) # html文本初始化

# html = etree.parse(‘./example.html’, etree.HTMLParser()) # html文件初始化

2. 补全HTML代码

print(etree.tostring(html).decode(‘utf-8’))

3. 文本获取

print(html.xpath(‘//a[@class=”parent”]/text()’)) # 获取所有a节点内class等于’parent’的文本,返回一个列表

4. 属性获取

print(html.xpath(‘//ul/@class’)) # 获取所有ul节点内的class值,返回一个列表

print(html.xpath(‘//ul/attribute::*’)) # 获取所有ul节点内的所有属性值,返回一个列表

5. 属性匹配

# 属性匹配

print(html.xpath(‘//ul[@class=”list”]’)) # 获取所有class等于’list’的ul节点,返回一个列表

# 属性多值匹配

print(html.xpath(‘//ul[contains(@class, “two”)]’)) # 获取所有class包含’two’的ul节点,返回一个列表

# 多属性匹配

print(html.xpath(‘//ul[contains(@class, “two”) and @id=”list-2″]’)) # 满足上面的情况再加上id等于’list-2’,返回一个列表

6. 获取所有节点

print(html.xpath(‘//*’)) # 获取所有节点,返回一个列表

print(html.xpath(‘//li’)) # 获取所有的li节点,返回一个列表

7. 获取父 / 祖先节点

print(html.xpath(‘//li/parent::*’)) # 获取所有li节点的直接父节点,返回一个列表

print(html.xpath(‘//li/..’)) # 用法同上

print(html.xpath(‘//li/ancestor::*’)) # 获取所有li节点的祖先节点,返回一个列表

print(html.xpath(‘//li/ancestor::ul’)) # 获取所有li节点的ul祖先节点,返回一个列表

8. 获取子 / 子孙节点

print(html.xpath(‘//ul/child::*’)) # 获取所有ul节点内的直接子节点,返回一个列表

print(html.xpath(‘//ul/child::li’)) # 获取所有ul节点内的li直接子节点,返回一个列表

print(html.xpath(‘//ul/li’)) # 用法同上

print(html.xpath(‘//ul/descendant::*’)) # 获取所有ul节点内的子孙节点,返回一个列表

print(html.xpath(‘//ul/descendant::a’)) # 获取所有ul节点内的a子孙节点,返回一个列表

print(html.xpath(‘//ul//a’)) # 用法同上

9. 获取兄弟 / 后续节点

print(html.xpath(‘//li[1]/following-sibling::*’)) # 获取所有li[1]节点之后的兄弟节点,返回一个列表

print(html.xpath(‘//li[1]/following::*’)) # 获取所有li[1]节点的后续节点,返回一个列表

print(html.xpath(‘//li[1]/following::*[2]’)) # 获取所有li[1]节点后的第二个节点,返回一个列表

10. 按序选择(正序位置是从1开始,last()-2 代表倒数第三个位置,因为last()是最后一个)

print(html.xpath(‘//ul/li[1]’)) # 获取所有ul节点内的第一个li节点,返回一个列表

print(html.xpath(‘//ul/li[last()]’)) # 获取所有ul节点内的最后一个li节点,返回一个列表

print(html.xpath(‘//ul/li[last()-2]’)) # 获取所有ul节点内的倒数第三个li节点,返回一个列表

print(html.xpath(‘//ul/li[position()<3]’)) # 获取所有ul节点内位置小于3的li节点,返回一个列表

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/125511.html

(0)
上一篇 10分钟前
下一篇 2024年 12月 7日 下午12:23

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信