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 etree



def 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 response


def main():
    """主要的业务逻辑"""
    # url
    url = "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的使用和语法,小可爱有哪些不明白的可以私聊了

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL 高级(进阶) SQL 语句

目录 创建两个表格 location 表格​编辑 store_info 表格​编辑 ---- SELECT ---- ---- DISTINCT ---- ---- WHERE ---- ---- AND OR ---- ---- IN ---- ---- BETWEEN ---- ---- 通配符 ---- ---- LIKE ---- ---- ORDER BY ---- ---- 函数 ---- ---- GROUP BY ---- ----…

最新ai创作系统CHATGPT镜像系统源码+支持GPT4.0+支持ai绘画(MJ)+实时语音识别输入+免费更新版本

AI系统CHATGPT镜像程序源码支持GPT4支持ai绘画实时语音识别输入免费更新版本 一、AI创作系统二、系统介绍三、系统程序下载四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 1、提问:程序已经支持GPT3.5、GPT4.0接口、支持新建会话,上下文记忆…

Windows11安装oneAPI和Visual Studio 2022配置Fortran并行环境

Windows11安装oneAPI和Visual Studio 2022配置Fortran并行环境 安装Visual Studio 2022 Community安装oneAPI建立Fortran工程项目测试建立单核运行的Fortran运行算例建立并行运行的Fortran运行算例 结语 安装Visual Studio 2022 Community 访问微软Visual Studio官网&#xff…

【java】HashMap扩容机制详解

文章目录 JDK1.7下的扩容机制JDK1.8下的扩容机制 JDK1.7下的扩容机制 JDK1.7下的resize()方法是这样的: void resize(int newCapacity) { Entry[] oldTable table; int oldCapacity oldTable.length; if (oldCapacity MAXIMUM_CAPACITY) { threshold Integer.…

git上传云效codeup

为了标识身份,建议先完成 Git 全局设置 git config --global user.name "xxx" git config --global user.email "xxxxxxqq.com" 1.删除本地 .git文件夹 2.云效上 添加库-新建代码库 3.在 git bash 里 按照 建好的代码库 下方的 命令行指引-…

无迹卡尔曼滤波在目标跟踪中的作用(一)

在前一节中,我们介绍了扩展卡尔曼滤波算法EKF在目标跟踪中的应用,其原理是 将非线性函数局部线性化,舍弃高阶泰勒项,只保留一次项 ,这就不可避免地会影响结果的准确性,除此以外,实际中要计算雅各…

美团动态线程池实践思路,开源了

使用线程池 ThreadPoolExecutor 过程中你是否有以下痛点呢? 1.代码中创建了一个 ThreadPoolExecutor,但是不知道那几个核心参数设置多少比较合适 2.凭经验设置参数值,上线后发现需要调整,改代码重启服务,非常麻烦 3.线…

TypeScript学习(一):快速入门

文章目录 一、TypeScript 简介1、TypeScript 是什么?2、TypeScript 与 JavaScript 的区别3、JavaScript 的缺点4、为什么使用 TypeScript 二、TypeScript 开发环境搭建1、下载Node.js2、安装Node.js3、使用npm全局安装TypeScript4、创建一个ts文件5、使用tsc对ts文件…

【资料分享】全志科技T507-H评估板规格书(4核ARM Cortex-A53,主频1.416GHz)

1 评估板简介 创龙科技TLT507-EVM是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53国产工业评估板,主频高达1.416GHz,由核心板和评估底板组成。核心板CPU、ROM、RAM、电源、晶振等所有器件均采用国产工业级方案,国产化率100%。同时&a…

Nexus如何导入jar以及批量导入Maven的本地库目录

前言 本篇基于 Nexus 的版本是 nexus-3.55.0-01本方法适用Linux和WindowsWindows 需要安装Git , 使用Git Bash执行 Nexus上传依赖包的方式 上传依赖包到Nexus 服务器的方式有多种, 包含: 单个jar上传: 在Nexus管理台页面上传单个jar源码编…

Thinkphp5分页后携带参数进行跳转传递

问题: 我在tp框架中写了一个图书详情分页的,代码如下: public function verify_details(){$sell_order_numinput(sell_order_num);$resDB::table(verif)->where(["sell_order_num">$sell_order_num])->paginate(10);// 模…

(三)灌溉系统WIFI通信部分

ESP8266 ESP8266S烧录器:CH430C arduino离线配置esp8266参考:参考文章 灯光闪烁就是烧录成功 ESP8266调试入门:参考文章 ESP8266调试:参考文章 人麻了已经,尝试半天了,AT指令没回应,尝试刷固…

【自监督论文阅读 4】BYOL

文章目录 一、摘要二、引言三、相关工作四、方法4.1 BYOL的描述4.2 Intuitions on BYOL’s behavior(BYOL行为的直觉)4.3 实验细节 五、实验评估5.1 Linear evaluation on ImageNet(ImageNet上的线性评估)5.2 Semi-supervised tra…

Office远程代码执行漏洞(CVE-2017-11882)漏洞复现

Office远程代码执行漏洞(CVE-2017-11882)漏洞复现 1.漏洞原理2.在Kali平台查看漏洞利用文件3.登录目标靶机,打开FTP服务器4.登录Kali,利用FTP服务器上传payload-cale.doc文件5.登录目标靶机,触发doc文件,验…

Angular 与 PDF之五 实现方式的选择与扩展

在纯web的前提下(不考虑移动端native),PDF的功能基本包括: 客户端PDF:最简单的场景,实现方式也很多,基本不需要有什么顾虑的地方,简单的实现可以参考系列第一篇文章。客户端PDF预览&…

华为战略方法论:BLM模型之差距分析(限制版)

目录 说明 差距类型 1、业绩差距 2、机会差距 3、对标差距 专栏列表 个人简介 说明 今天就来谈谈 BLM 模型中的第一把钥匙,也就是差距分析。 从本质上来看。 BLM 模型中的差距与你在日常生活中听到或用到的差距在意义都是一样的。 不同之处就在于问题的复…

网络安全(黑客)自学

建议一:黑客七个等级 黑客,对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域,越深入越敬畏,知识如海洋,黑客也存在一些等级,参考知道创宇 CEO ic(世界顶级黑客团队 0x557 成员&…

java Collection集合使用笔记

1、Collection集合概述 它是单例集合的最顶层接口,它表示一组对象,这些对象也称之为Collection的元素JDK不提供此接口任何直接实现,但提供更具体的子接口(如:List和Set)实现创建Collection集合对象的方法&…

Ant Design Vue 走马灯实现单页多张图片轮播

最近的项目有个需求是,这种单页多图一次滚动一张图片的轮播效果,项目组件库是antd、vue3 然而用了antd的走马灯是这样子的 我们可以看到官网给的api是没有这种功能,百度上也多是在css上动刀,那样也就毕竟繁琐了,我们是…

测试Hyperledger Fabric环境

首先进入fabric-samples目录中的first-networked 子目录 cd fabric-samples/first-network 在first-network目录下有一个自动化脚本byfn.sh,可以使用-help参数查看相应的可 用命令,在命令提示符中输入如下命令: ./byfn.sh --help命令执行成功后&#…