python---------xpath提取数据------打破局限

作者前言

 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com

目录

为什么要学习XPATH和LXML类库
什么是XPATH
认识XML
XML的节点关系
常⽤节点选择⼯具
节点选择语法
节点修饰语法
选择未知节点
lxml库
_____________________________________________________________

为什么要学习XPATH和LXML类库

可以利⽤ Xpath 来快速的定位特定元素以及获取节点信息,我们可以理解 为对 html 或 xml 形式的⽂本提取特定的内容

什么是XPATH

Xpath 全称是 xml path language ,Xpath是⼀⻔在 HTML/XML ⽂档中查 找信息的语⾔,可⽤来在HTML/XML ⽂档中对元素和属性进⾏遍 历, XPath 使⽤路径表达式来选取 HTML/XML ⽂档中的节点或者节点集

认识XML

 XML的节点关系

节点的概念:每个XML的标签我们都称之为节点 ,其中最顶层的节点称为根节

节点选择语法

 节点修饰语法

选择未知节点

 lxml库

lxml 是 ⼀个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。
利⽤etree.HTML,将字符串转化为Element对象
lxml python 官⽅⽂档: http://lxml.de/index.html 可使⽤ pip 安装: pip install lxml (或通过wheel⽅式安装)
lxml 可以⾃动修正 html 代码
安装:

 下面我来爬取一个页面来给小可爱们

代码:

import requests
from lxml import etreedef parse_data(html):# 创建一个xpath对象e_html=etree.HTML(html)# print(e_html.xpath('//main[@id="c-626160000"]'))for i in e_html.xpath('//main[@id="c-626160000"]'):print("/n".join(i.xpath('./p//text()')).strip())return "".join(i.xpath('./p//text()')).strip()def save_data(data):with open("小说.txt","w",encoding="utf-8")as f:f.write(data)def parse_url(url,header):response = requests.get(url)return responsedef main():"""主要的业务逻辑"""# urlurl = "https://www.qidian.com/chapter/1021617576/626160000/"header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"}# 发送请求获取响应response = parse_url(url, header)# print(response.text)html = response.text# 数据的提取data = parse_data(html)# 保存save_data(data)if __name__ == '__main__':main()

结果:

 总结

这里我简单的介绍了xpath的使用和语法,小可爱有哪些不明白的可以私聊了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/1229.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mediapipe 手势节点识别自动控制音量

参考:https://www.computervision.zone/topic/volumehandcontrol-py/ 主函数: VolumeHandControl.py import cv2 import time import numpy as np import HandTrackingModule as htm import math from ctypes import cast, POINTER from comtypes imp…

基于Echarts构建停车场数据可视化大屏

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

chatgpt赋能python:关于Python的常见问题及解决方法

关于Python的常见问题及解决方法 在编程领域中,Python已经成为了最流行的编程语言之一。然而,在使用Python编写代码时,难免会遇到一些问题。在本文中,我们将介绍一些常见的Python问题以及如何解决它们。 编码问题 在Python中&a…

图-深度优先搜索与广度优先搜索

图 在现实生活中,有许多应用场景会包含很多点以及点点之间的连接,而这些应用场景我们都可以用即将要学习的图 这种数据结构去解决 地图 我们生活中经常使用的地图,基本上是由城市以及连接城市的道路组成,如果我们把城市看做是一…

2023年华中杯数学建模B题小学数学应用题相似性度量及难度评估解题全过程文档及程序

2023年华中杯数学建模 B题 小学数学应用题相似性度量及难度评估 原题再现 某 MOOC 在线教育平台希望能够进行个性化教学,实现用户自主学习。在用户学习时,系统从题库中随机抽取若干道与例题同步的随堂测试题,记录、分析学生的学习和答题信息…

HTML5新特性总结

新增语义化标签 新增了很多语义化标签,如header、footer、nav、article、section(页面中的某段文字,或文章中的某段文字)、aside、main 其中article标签里可以包含多个section; section强调的是分段或分块,若想将一块内容分成几…

【TCP/IP】IP地址与域名之间的转换 - gethostbyname 和 gethostbyaddr函数

目录 域名系统 DNS服务器 IP地址和域名之间的转换 通过域名获取IP地址 通过IP地址获取域名 域名系统 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式…

物联网助力鲜花冷链安全——温湿度监控系统

近几年来我国花卉生产的发展尤为迅速,生产面积逐年扩大,产值成倍增长,内销市场越来越旺,出口创汇也有较大幅度上升。 随着人民生活水平的提高和可支配收入的增加,人们对鲜花的需求日益增长,花卉市场的前景…

图书搜索领域重大突破!用Apache SeaTunnel、Milvus和OpenAI提高书名相似度搜索精准度和效率

作者 | 刘广东,Apache SeaTunnel Committer 背景 目前,现有的图书搜索解决方案(例如公共图书馆使用的解决方案)十分依赖于关键词匹配,而不是对书名实际内容的语义理解。因此会导致搜索结果并不能很好地满足我们的需…

C#项目练习系列--1.倒计时器

C#项目练习系列--1.倒计时器 实操感想代码 实操 总体实现功能:选定计时时间—点击开始计时—进度条和剩余时间显示—提示时间到。 软件版本:VS2019 1.新建工程 选择c#,windows窗体应用,.NET Framework版本选择4或4以下时最后…

【Redis常见命令】 —— 关于Redis的一点儿知识

💧 【 R e d i s 常见命令】——关于 R e d i s 的一点儿知识 \color{#FF1493}{【Redis常见命令】 —— 关于Redis的一点儿知识} 【Redis常见命令】——关于Redis的一点儿知识💧 🌷 仰望天空,妳我亦是行人.✨ &#x1f…

【数据挖掘】时间序列教程【一】

第一章 说明 对于时间序列的研究,可以追溯到19世纪末和20世纪初。当时,许多学者开始对时间相关的经济和社会现象进行研究,尝试发现其规律和趋势。其中最早的时间序列研究可以追溯到法国经济学家易贝尔(Maurice Allais)…