Python爬虫必备之Xpath简介及实例讲解
什么是Xpath
Xpath(XML Path Language)是一种在XML文档中定位元素的语言。它可以通过标签、属性等特征,准确定位到需要抽取数据的目标元素。在Python爬虫中,Xpath是一个非常重要的工具,可以帮助我们快速准确地抽取需要的数据。
Xpath的基本语法
Xpath的语法非常简单,以下是常用的一些语法:
nodename
: 选取此节点的所有子节点。/
: 从根节点开始选取(绝对路径)。//
: 从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。.
: 选取当前节点。..
: 选取当前节点的父节点。@
: 选取属性。
Xpath的实例讲解
示例1
以下是一个HTML文档的例子:
<html>
<head>
<title>示例页面</title>
</head>
<body>
<div class="container">
<h1>这是一个标题</h1>
<p class="content">这是段落1</p>
<p class="content">这是段落2</p>
<a href="https://www.baidu.com">这是一个链接</a>
</div>
</body>
</html>
我们要抽取出其中的标题和链接。使用Xpath的语法表达式,可以得到以下结果:
from lxml import etree
html = """
<html>
<head>
<title>示例页面</title>
</head>
<body>
<div class="container">
<h1>这是一个标题</h1>
<p class="content">这是段落1</p>
<p class="content">这是段落2</p>
<a href="https://www.baidu.com">这是一个链接</a>
</div>
</body>
</html>
"""
selector = etree.HTML(html)
title = selector.xpath('//title/text()')[0]
link = selector.xpath('//a/@href')[0]
print(title)
print(link)
输出结果如下:
示例页面
https://www.baidu.com
示例2
以下是一个网页的例子:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>电影排行榜</title>
</head>
<body>
<ul class="list">
<li class="item">
<div class="name">霸王别姬</div>
<div class="score">9.7</div>
<div class="author">陈凯歌</div>
</li>
<li class="item">
<div class="name">肖申克的救赎</div>
<div class="score">9.5</div>
<div class="author">弗兰克·德拉邦特</div>
</li>
<li class="item">
<div class="name">这个杀手不太冷</div>
<div class="score">9.4</div>
<div class="author">吕克·贝松</div>
</li>
</ul>
</body>
</html>
我们要抽取出其中的电影名称、评分和导演。使用Xpath的语法表达式,可以得到以下结果:
from lxml import etree
html = """
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>电影排行榜</title>
</head>
<body>
<ul class="list">
<li class="item">
<div class="name">霸王别姬</div>
<div class="score">9.7</div>
<div class="author">陈凯歌</div>
</li>
<li class="item">
<div class="name">肖申克的救赎</div>
<div class="score">9.5</div>
<div class="author">弗兰克·德拉邦特</div>
</li>
<li class="item">
<div class="name">这个杀手不太冷</div>
<div class="score">9.4</div>
<div class="author">吕克·贝松</div>
</li>
</ul>
</body>
</html>
"""
selector = etree.HTML(html)
movie_list = selector.xpath('//ul[@class="list"]/li')
for movie in movie_list:
name = movie.xpath('.//div[@class="name"]/text()')[0]
score = movie.xpath('.//div[@class="score"]/text()')[0]
author = movie.xpath('.//div[@class="author"]/text()')[0]
print('电影名:', name, '评分:', score, '导演:', author)
输出结果如下:
电影名: 霸王别姬 评分: 9.7 导演: 陈凯歌
电影名: 肖申克的救赎 评分: 9.5 导演: 弗兰克·德拉邦特
电影名: 这个杀手不太冷 评分: 9.4 导演: 吕克·贝松
以上就是Xpath的简介及实例讲解,希望对大家有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python爬虫必备之Xpath简介及实例讲解 - Python技术站