热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python爬虫基础之xpath使用教程

介绍XPath是一种XML路径语言,被用于在XML文档中通过元素和属性进行导航安装pipinstalllxml使用html示例内容,下面的所有练习全都来自与此段示例

介绍

XPath是一种XML路径语言,被用于在XML文档中通过元素和属性进行导航


安装

pip install lxml

使用

html示例内容,下面的所有练习全都来自与此段示例








this is a text



this is a span




this is a list



  • 北京

  • 上海

  • 广州

  • 西二旗





读取html内容

from lxml import etree
with open('test.html', 'r', encoding='utf-8') as fr:
html = fr.read()
et = etree.HTML(html)

下面就接着这个代码段往下写。


所有节点、父节点、子孙节点

所有节点是通过指定'//*'来获取,例如

et.xpath('//*')

返回如下:

[, , , , , , , , , , , , , , , , , ]

子孙结点是通过'//'来获取

# 获取所有的li节点
et.xpath('//li')

父节点是通过'..'来获取,有点像linux的..上级目录

et.xpath('//p/../@class')

结果为

['color1']

获取文本text()

res0 = et.xpath('//body/p/text()')

返回结果

['this is a text']

获取指定标签下的内容

res1 = et.xpath('//li[1]/a/text()')
print(res1)

返回结果

['北京']

指定具体的标签

res2 = et.xpath('//div/p/')
print(res2)

返回内容

[]

指定类选择器

res3 = et.xpath('//li/a[@class="color2"]/text()')
print(res3)

返回结果

['广州']

指定id选择器

res4 = et.xpath('//li/a[@id="color3"]/text()')
print(res4)

返回结果

['上海']

模糊匹配

res5 = et.xpath('//li/a[contains(@href, "http")]/text()')
print(res5)

返回结果

['西二旗']

指定某个属性的具体值

res6 = et.xpath('//li/a[@href="https://www.dogfei.cn"]/text()')
print(res6)

返回结果

['西二旗']

获取指定位置的内容

res7 = et.xpath('//li[last()]/a/text()')
print(res7)

返回结果

['西二旗']

也可以用[last() - 1]

还可以使用position()

res8 = et.xpath('//li[position() <3]/a/text()')
print(res8)

返回结果

['北京', '上海']

通过使用position()可以获取到一组数据


通配符

res9 = et.xpath('//li/*/text()') # *也可以省略
print(res9)

返回结果

['北京', '上海', '广州', '西二旗']

指定所有属性

res10 = et.xpath('//li//a[@*]/text()')
print(res10)

返回结果

['北京', '上海', '广州', '西二旗']

使用./再次查找

res11 = et.xpath('//li')
for i in res11:
r = i.xpath('./a/text()')[0]
print(r)

返回结果

北京
上海
广州
西二旗

实战案例

此案例简单来爬取豆瓣电影的top250,只拿第一页的数据,打印出排名和电影名,重点是来掌握xpath的用法

豆瓣电影top250的访问地址为:https://movie.douban.com/top250

查看页面源代码或者浏览器f12查看页面元素定位到标签位置,打开其中一段分析来看:





  1. 1

    肖申克的救赎 src="https://img.php1.cn/3cd4a/1eebe/cd5/45a090220e38e09d.webp"/>



    欢迎各位朋友关注我的公众号,来一起学习进步哦

    images



    推荐阅读
    • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
      大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
    • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
    • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
      在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
    • 利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Exce ... [详细]
    • Python 3 Scrapy 框架执行流程详解
      本文详细介绍了如何在 Python 3 环境下安装和使用 Scrapy 框架,包括常用命令和执行流程。Scrapy 是一个强大的 Web 抓取框架,适用于数据挖掘、监控和自动化测试等多种场景。 ... [详细]
    • 在Windows系统中安装TensorFlow GPU版的详细指南与常见问题解决
      在Windows系统中安装TensorFlow GPU版是许多深度学习初学者面临的挑战。本文详细介绍了安装过程中的每一个步骤,并针对常见的问题提供了有效的解决方案。通过本文的指导,读者可以顺利地完成安装并避免常见的陷阱。 ... [详细]
    • 在处理 XML 数据时,如果需要解析 `` 标签的内容,可以采用 Pull 解析方法。Pull 解析是一种高效的 XML 解析方式,适用于流式数据处理。具体实现中,可以通过 Java 的 `XmlPullParser` 或其他类似的库来逐步读取和解析 XML 文档中的 `` 元素。这样不仅能够提高解析效率,还能减少内存占用。本文将详细介绍如何使用 Pull 解析方法来提取 `` 标签的内容,并提供一个示例代码,帮助开发者快速解决问题。 ... [详细]
    • 网站访问全流程解析
      本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
    • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
    • window下的python安装插件,Go语言社区,Golang程序员人脉社 ... [详细]
    • javascript分页类支持页码格式
      前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
    • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
    • 本文将详细介绍如何注册码云账号、配置SSH公钥、安装必要的开发工具,并逐步讲解如何下载、编译 HarmonyOS 2.0 源码。通过本文,您将能够顺利完成 HarmonyOS 2.0 的环境搭建和源码编译。 ... [详细]
    • 属性类 `Properties` 是 `Hashtable` 类的子类,用于存储键值对形式的数据。该类在 Java 中广泛应用于配置文件的读取与写入,支持字符串类型的键和值。通过 `Properties` 类,开发者可以方便地进行配置信息的管理,确保应用程序的灵活性和可维护性。此外,`Properties` 类还提供了加载和保存属性文件的方法,使其在实际开发中具有较高的实用价值。 ... [详细]
    • Python错误重试让多少开发者头疼?高效解决方案出炉
      ### 优化后的摘要在处理 Python 开发中的错误重试问题时,许多开发者常常感到困扰。为了应对这一挑战,`tenacity` 库提供了一种高效的解决方案。首先,通过 `pip install tenacity` 安装该库。使用时,可以通过简单的规则配置重试策略。例如,可以设置多个重试条件,使用 `|`(或)和 `&`(与)操作符组合不同的参数,从而实现灵活的错误重试机制。此外,`tenacity` 还支持自定义等待时间、重试次数和异常处理,为开发者提供了强大的工具来提高代码的健壮性和可靠性。 ... [详细]
    author-avatar
    亿达口香糖
    这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有