首页 > 其他分享 >(一)如何使用 Parsel 和 XPath 进行网页数据提取

(一)如何使用 Parsel 和 XPath 进行网页数据提取

时间:2024-08-03 14:29:50浏览次数:13  
标签:XPath 提取 text HTML 文档 Parsel 网页

简介

在网络爬虫开发中,数据提取是一个至关重要的步骤。Parsel 是一个强大的 Python 库,结合 XPath,可以轻松从 HTML 或 XML 文档中提取所需数据。本文将介绍 Parsel 和 XPath 的基础知识,并展示如何在实际项目中使用它们进行网页数据提取。

什么是 Parsel?

Parsel 是一个专门用于处理 HTML 和 XML 文档的 Python 库。它提供了简洁的 API,可以帮助开发者快速定位和提取文档中的信息。Parsel 尤其适用于需要大量数据抓取的任务,特别是在 Scrapy 框架中,Parsel 是其核心组件之一。

什么是 XPath?

XPath(XML Path Language)是一种用于在 XML 和 HTML 文档中定位节点的语言。它使用路径表达式来选择节点,可以通过元素名称、属性、索引、文本内容等多种方式进行选择。

安装 Parsel

在开始之前,我们需要安装 Parsel 库。你可以通过以下命令进行安装:

pip install parsel

XPath 基础

在学习如何使用 Parsel 之前,先来了解一些常用的 XPath 表达式:

  • /:从根节点选择。
  • //:选择文档中的所有匹配节点,不论它们的位置。
  • @:选择属性。
  • *:通配符,匹配任何元素。

常见的 XPath 表达式示例

/html/body/div  # 选择从根节点到div元素的路径
//a[@href]  # 选择所有包含href属性的a标签
//p[text()]  # 选择所有包含文本的p标签

使用 Parsel 和 XPath 提取网页数据

现在我们来看看如何使用 Parsel 和 XPath 从 HTML 文档中提取数据。

示例:提取标题和链接

假设我们有以下简单的 HTML 代码:

<html>
  <body>
    <div class="content">
      <h1>Title</h1>
      <p class="description">This is a paragraph.</p>
      <a href="http://example.com">Link</a>
    </div>
  </body>
</html>

我们可以使用 Parsel 和 XPath 来提取标题、段落文本和链接。

from parsel import Selector

# HTML 文档
html = '''
<html>
  <body>
    <div class="content">
      <h1>Title</h1>
      <p class="description">This is a paragraph.</p>
      <a href="http://example.com">Link</a>
    </div>
  </body>
</html>
'''

# 创建一个 Selector 对象
sel = Selector(text=html)

# 使用 XPath 提取标题
title = sel.xpath('//h1/text()').get()
print(f"标题: {title}")

# 提取段落中的文本
paragraph = sel.xpath('//p[@class="description"]/text()').get()
print(f"段落: {paragraph}")

# 提取链接的 href 属性
link = sel.xpath('//a/@href').get()
print(f"链接: {link}")

代码解释

  1. sel = Selector(text=html)

作用:创建一个 Selector 对象来解析 HTML 文档。

  • Selector 是 Parsel 库中的一个类,用于解析和处理 HTML 或 XML 文档。

  • text=htmlhtml 是一个字符串,包含整个 HTML 文档的内容。text 参数将这个 HTML 字符串传递给 Selector,让它解析这个 HTML 文档。

  • sel:是创建的 Selector 对象,后续我们可以通过这个对象使用 XPath 表达式来选择和提取 HTML 文档中的数据。

  1. title = sel.xpath('//h1/text()').get()

作用:使用 XPath 表达式从 HTML 文档中提取 <h1> 标签的文本内容。

  • sel.xpath('//h1/text()')

    • sel 是前面创建的 Selector 对象。

    • xpath() 方法用于在 HTML 文档中查找符合条件的节点。

    • '//h1/text()'
      

      是一个 XPath 表达式,表示选择文档中所有的

      <h1>
      

      标签并提取它们的文本内容:

      • //:表示选择文档中所有匹配的节点,不论它们的位置。
      • h1:表示选择所有的 <h1> 标签。
      • /text():表示从这些 <h1> 标签中提取纯文本内容。
  • .get():从匹配的结果中提取第一个文本内容(如果有多个 <h1> 标签,它只返回第一个)。

  • title:提取的文本内容被存储在 title 变量中。

  1. print(f"标题: {title}")

作用:将提取到的标题内容打印出来。

  • print():将信息输出到控制台或终端。
  • f"标题: {title}":这是一个格式化字符串(f-string),其中 {title} 会被替换为变量 title 的值。
  • 输出结果会是 "标题: " 后面跟着从 <h1> 标签中提取的文本内容。

输出结果

标题: Title
段落: This is a paragraph.
链接: http://example.com

更多的 XPath 和 Parsel 功能

Parsel 还支持很多高级功能,比如选择多个元素、嵌套选择器以及结合正则表达式进行复杂的文本提取。

选择多个元素

如果你想提取页面中的所有链接文本,可以使用 getall() 方法:

python复制代码links = sel.xpath('//a/text()').getall()
print(f"所有链接文本: {links}")

嵌套选择器

你可以在一个选择器中进一步选择子元素,例如:

python复制代码content = sel.xpath('//div[@class="content"]')
title = content.xpath('.//h1/text()').get()

标签:XPath,提取,text,HTML,文档,Parsel,网页
From: https://www.cnblogs.com/liangyixu342/p/18340447

相关文章

  • 实用好软-----pc端开源万能下载工具 支持任何视频界面 包括网页抖音等
            很多网友喜欢刷刷视频,对于有些特殊爱好或者教程的视频想保存下来后续观看。但苦于找不到类似工具,今天分享的这款工具可以嗅探当前视频。还可以轻松嗅探并下载网络上的各种宝藏,比如视频、音频、图片、m3u8等等.支持下载各大热门平台的资源,比如微信视频......
  • 如何记录网页的链接并将其存储在变量中?
    基本上在我的项目中,我使用webbrowser打开一个网页,然后使用pyautogui在搜索栏中输入一些内容,这会打开一个新页面。我需要一个函数来查找新页面的链接并将其存储为变量,以便我可以拥有动态requests.get()函数。我希望我的解释有意义我不知道如何检索它并将其保存为变量,我......
  • 老板让你点评网页UI,你却不知道如何说起……
    当评价网页UI设计时,可以参考以下几个标准:1.一致性(Consistency):一个优秀的网页UI应该保持一致性,即在整个网页中使用相同的设计元素和样式,如颜色、字体、按钮样式等。这样可以增加用户的熟悉感,提升用户的导航和使用效率。  2.可读性(Readability):网页UI设计应该注重文......
  • 探索 Electron:如何进行网址收藏并无缝收录网页图片内容?
    Electron是一个开源的桌面应用程序开发框架,它允许开发者使用Web技术(如HTML、CSS和JavaScript)构建跨平台的桌面应用程序,它的出现极大地简化了桌面应用程序的开发流程,让更多的开发者能够利用已有的Web开发技能来构建功能强大且跨平台的应用程序,这对于提升开发效率和应用程......
  • 青少年编程与数学 01-008 在网页上完成计算 01课题、数学课程的性质
    青少年编程与数学01-008在网页上完成计算01课题、数学课程的性质课题要求一、课程性质二、数学的本质三、数学的社会功能四、数学教育的重要性五、数学教育的目标六、数学教育的特性七、连贯性和实践性连贯性(Coherence)实践性(Practicality)八、个性化进度与节奏九、数......
  • A100-基于Springboot的网页时装购物系统的设计与实现(源码+论文+开题报告+PPT+包运行)
    3研究的内容目前许多人仍将传统的纸质工具作为信息管理的主要工具,而网络技术的应用只是起到辅助作用。在对网络工具的认知程度上,较为传统的office软件等仍是人们使用的主要工具,而相对全面且专业的时装购物系统的信息管理软件仍没有得到大多数人的了解或认可。本选题则旨在通......
  • 【常用技能】截取整个网页并生成图片
    【常用技能】截取整个网页并生成图片    一、环境说明: 1、浏览器:chrome 2、环境:在浏览器中,打开要被截图的网页。    二、截图步骤 1、【进入调试界面】:F12,进入浏览器调试页面; 2、【进入Network选项卡】:选择选项卡“Network”; ......
  • 招投标系统VUE网页编辑Word且兼容微软Office和金山WPS支持Electron
    随着信息技术的不断发展,电子政务已经非常普及,电子招投标行业市场规模不断扩大,电子招投标不仅可以减少繁琐的人工操作,提高工作效率,还能保证公开透明的招标流程,制作招标文件过程中,由于微软Office和金山WPS等办公软件无法直接内嵌到浏览器中,有的招标制作工具用的Electron,需要在纯内网......
  • uniapp 网页打包成app(使用webview)
    uniapp网页打包成app(使用webview)https://blog.csdn.net/m0_58135258/article/details/130760777在static目录下放web目录,然后文件是pages/index/index.vue<template> <viewclass="content"> <web-viewsrc="/static/dist/index.html"></we......
  • 用selenium打开网页的最小模板
    前言环境:win10python3.10selenium4.12经常用selenium来实现一个打开网页的这样一个小功能,虽然代码很少,但每次重0开始写就很烦。所以这里记录下一个模板小模板importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.web......