Python爬虫必备之Xpath简介及实例讲解

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技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • 给Python中的MySQLdb模块添加超时功能的教程

    为了给Python中的MySQLdb模块添加超时功能,我们可以采用以下步骤: 1. 安装必要工具 首先,我们需要安装MySQLdb模块,以及DBUtils模块。可以使用pip命令进行安装,具体命令如下: pip install mysqlclient pip install dbutils 2. 为MySQLdb添加超时功能 我们可以使用Connection…

    python 2023年6月3日
    00
  • python实现语音常用度量方法的代码详解

    Python实现语音常用度量方法的代码详解 语音信号处理是一项重要的研究领域,其中常用的度量方法包信噪比(SNR)、语音质量评估(PESQ)和语音识别率(WER)等。在本攻略中,我们将介绍如何使用Python实现这些常用的度量方法,并提供两个示例来说明如何使用这些度量方法进行语音信号处理。 步骤1:了解常用的度量方法 在语音信号处理中,常用的度量方法包括: …

    python 2023年5月14日
    00
  • python常用知识梳理(必看篇)

    以下是“Python常用知识梳理(必看篇)”的完整攻略,其中包括了变量、数据类型、运算符、条件语句、循环语句、函数、模块、异常处理等内容。同时,我也会提供两个示例来说明如何使用这些知识点。 Python常用知识梳理(必看篇) Python是一种高级编程语言,具有简单易学、读性强、功能强大等特点。本文将介绍Python的常用知识,包括变量、数据类型、运算符、条…

    python 2023年5月13日
    00
  • Python3.5集合及其常见运算实例详解

    Python3.5集合及其常见运算实例详解 集合(Set)是Python中的一种数据类型,它是由一组无序且不重复的元素组成。集合可以进行交集、并集、差集等见运算,可以便地进行数据处理和分析。本攻略将详细介绍Python3.5集合及其常见运算实例,括集合的创建、添加元素、删除元素、集合运算等。 集合的创建 在Python中,可以使用set()函数或{}来创建一…

    python 2023年5月13日
    00
  • Python数据类型详解(三)元祖:tuple

    Python数据类型详解(三)元组:tuple 什么是元组? 元组(tuple)与列表类似,也是一种序列,但是元组是不可变的(immutable),即一旦创建后就不能再被修改。元组可以包含多个不同类型的元素,被包含的元素之间以逗号分隔,同时还可以使用小括号来包含元素。 如何创建元组? 创建元组的语法与列表类似,使用小括号将元素括起来,并用逗号分隔。例如: m…

    python 2023年5月14日
    00
  • Python中的self用法详解

    下面是“Python中的self用法详解”的完整攻略。 什么是self? 在Python中,self是指向类实例本身的一个符号,类的方法中必须有一个名为self的参数。self代表的是当前对象,它可以用来访问当前对象的属性和方法。 self的作用 self在方法中表示当前对象,它可以用来访问当前对象的属性和方法。在Python中,如果我们要在类的方法中访问对…

    python 2023年5月14日
    00
  • Python爬虫图片懒加载技术 selenium和PhantomJS解析

    Python爬虫图片懒加载技术 selenium和PhantomJS解析 本文将介绍如何利用Python爬虫对使用懒加载技术的网页上的图片进行爬取。在这里我将使用selenium和PhantomJS解析器作为我们工具。其中selenium是一个流行的Web自动化测试框架,可以模拟用户在浏览器上的各种操作,而PhantomJS是一个无界面的,基于WebKit的…

    python 2023年5月14日
    00
  • python的faker库用法

    Python中faker库的用法 faker库概述 faker是一个用来生成假数据的Python库,可以用来生成各种类型的文本、姓名、地址、城市、国家、网址、电子邮件、IP地址、词语、句子等等。它的使用非常简单,可以大大简化测试程序中的数据准备工作。 安装和使用faker库 安装faker库可以通过pip命令进行安装: pip install faker 安…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部