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

yizhihongxing

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语言检测模块langid和langdetect的使用实例

    下面是详细讲解“Python语言检测模块langid和langdetect的使用实例”的完整攻略。 简介 在文本分析领域,语言检测模块是一个重要的工具。Python语言提供了两种流行的语言检测模块:langid和langdetect。这两个模块都可以用来检测文本的语言,可以帮助我们进行自然语言处理、机器翻译、文本分类等任务。 langid langid是一个…

    python 2023年6月3日
    00
  • python3实现常见的排序算法(示例代码)

    Python3实现常见的排序算法 排序算法是计算机科学中的基本算法之一,它可以将一组无序的数据按照一定的规则进行排序。在Python3中,可以使用多种算法来实现排序,包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。本文将详细讲解Python3实现常见的排序算法的完整攻略,包括算法原理、Python3实现过程和示例。 冒泡排序 冒泡排序是一种简单的排序…

    python 2023年5月13日
    00
  • Python 保存矩阵为Excel的实现方法

    下面我将详细讲解如何用Python将矩阵保存为Excel的实现方法,分为以下几个步骤: 1. 安装必要的库 使用Python保存矩阵为Excel需要使用到两个库:numpy和pandas。如果你还没有安装这两个库,请在命令行中执行以下指令: pip install numpy pandas 2. 准备要保存的数据 在本例中,我们使用numpy生成一个3行4列…

    python 2023年5月14日
    00
  • 浅谈Python的异常处理

    浅谈Python的异常处理 异常处理是编程中一个重要的概念,因为它可以帮助程序员在程序的执行过程中更好地控制错误情况的处理。异常是程序中的一个特殊事件,它可能导致程序的中断或崩溃。Python中的异常处理机制可以帮助我们处理这些异常情况,以使程序在执行过程中保持稳定。 try….except语句 Python中最常用的异常处理语句是try….exce…

    python 2023年5月13日
    00
  • Python实现简单的多任务mysql转xml的方法

    下面是“Python实现简单的多任务mysql转xml的方法”的完整攻略: 1. 准备工作 在实现多任务mysql转xml功能之前,需要先完成以下准备工作:- 安装Python环境- 安装MySQL-python模块- 安装lxml模块 2. 连接MySQL数据库 使用MySQL-python模块,通过以下步骤连接MySQL数据库: import MySQL…

    python 2023年6月3日
    00
  • 详解Python中正则匹配TAB及空格的小技巧

    详解Python中正则匹配TAB及空格的小技巧 在Python中,正则表达式是一种强大的工具,可以用于匹配字符串中的各种模式。本攻略将详细解如何使用正则表达式匹配TAB及空的小技巧。 匹配空格 在正则表达式中,空格可以用\s表示。下面是一个例子,演示如何使用正则表达式匹配字符串中的空格: import re text = ‘Hello, world!’ pa…

    python 2023年5月14日
    00
  • Windows系统下pycharm中的pip换源

    以下是Windows系统下PyCharm中pip换源的完整攻略: Step1:找到pip的配置文件 在Windows系统下,pip的配置文件一般存放在用户目录下的 %APPDATA%/pip/pip.ini 文件中。如果没有该文件,可以先在该目录下新建一个名为pip的文件夹,再在该文件夹中新建一个名为pip.ini的文本文档。 打开pip.ini文本文档,开…

    python 2023年5月14日
    00
  • 复制粘贴功能的Python程序

    关于“复制粘贴功能的Python程序”的制作,我提供以下完整攻略。 1. 概述 首先,我们需要了解一下制作这个程序的基本思路。在Python中,实现复制粘贴功能的方法是通过使用pyperclip库。该库提供一些用于复制和粘贴剪贴板中文本的函数。基本上,我们需要做的就是使用这些函数,根据用户的输入在剪贴板中进行操作。 2. 安装pyperclip 我们需要先安…

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