Python学习 Day42 数据解析-XPath 06

数据解析

一、XPath解析数据

(一)XPath概述

XPath:全称XML Path Language是一种小型的查询语言,用于在XML文档中查找信息
XPath的优点:

  • 1.可在XML中查找信息
  • 2.支持HTML的查找
  • 3.可通过元素和属性进行导航

XPath需要依赖lxml库

安装方式:pip install lxml


(二)使用XPath选取节点

表达式描述
nodename选取此节点的所有子节点
/从根结点选择
//从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置
.选取当前节点
选取当前节点的父节点
/text()获取当前路径下的文本内容
/@xxx获取当前路径下标签的属性值
|可选符可选取若干个路径//pl//div,在当前路径下选取所有符合条件的p标签和div标签

示例

表达式描述
xpath(’/body/div[1]’ )选取body下的第一个div节点
xpath(’/body/div[last()]’)选取body下最后一个div节点
xpath(’/body/div[last()-1]’)选取body下倒数第二个div节点
xpath(’/body/div[position() < 3]’)选取body前两个div节点
xpath(’/body/div[@class]’)选取body下带有class属性的div节点
xpath(’/body/div[@class=main]’)选取body下class属性为main的div节点
xpath(’/body/div[price》35.00]’)选取bodyprice元素大于35的div节点

(三)XPath插件的安装

  • 1.下载谷歌浏览器XPath插件
  • 2.安装XPath插件
  • 3.使用XPath

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注意:插件的解压

  • 1.后缀名称为crx的插件修改为rar格式,然后解压该压缩包。

  • 2.chrome拓展打开开发者模式,选择加载压缩包


(四)案例

获取小说名称
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
获取小说作者
在这里插入图片描述
将代码复制到记事本中
在这里插入图片描述


(五)使用Python代码实现

具体参数的获取
在这里插入图片描述
代码实现


import requests
from lxml import etree
url = 'https://www.qidian.com/finish/'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36'}

#发送请求
resp = requests.get(url,headers)
e = etree.HTML(resp.text) #类型转换 将str类型转换为class 'lxml.etree._Element
#print(type(e))  <class 'lxml.etree._Element'>

# 获取小说名称
names = e.xpath('//div[@class="book-mid-info"]/h4/a/text()')
#print(names)

#获取小说作者
authors = e.xpath('//p[@class="author"]/a[1]/text()')
#print(authors)

#zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
for name,author in zip(names,authors):
    print(name,":",author)

输出结果

万族之劫 : 老鹰吃小鸡
诡秘之主 : 爱潜水的乌贼
我师兄实在太稳健了 : 言归正传
烂柯棋缘 : 真费事
吞噬星空 : 我吃西红柿
我有一座冒险屋 : 我会修空调
世子很凶 : 关关公子
凡人修仙传 : 忘语
第一序列 : 会说话的肘子
全球高武 : 老鹰吃小鸡
港综世界大枭雄 : 萌俊
大王饶命 : 会说话的肘子
遮天 : 辰东
惊悚乐园 : 三天两觉
妖魔哪里走 : 全金属弹壳
斗罗大陆 : 唐家三少
牧神记 : 宅猪
九星毒奶 : 育
放开那个女巫 : 二目
完美世界 : 辰东

Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值