数据解析
一、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