首页 > 其他分享 >网页数据的解析提取

网页数据的解析提取

时间:2024-09-23 20:12:03浏览次数:1  
标签:13 提取 &# etree html 168 网页 139 解析

lxml库安装:

pip install lxml

若报错,可能由于镜像源问题:

python -m pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple
#清华大学开源软件镜像站

使用xpath对网页进行解析实例:

#导入lxml库的etree模块
from lxml import etree

声明一段html文本

text="""
<div class="col nav-sub">
<ul id="python">
<li class="cat-item"><a href="/python3/python3-tutorial.html">Python3 教程 <i class="fa fa-external-link" aria-hidden="true"></i></a></li>
<li class="cat-item"><a href="/python/python-tutorial.html">Python2 教程 <i class="fa fa-external-link" aria-hidden="true"></i></a></li>
</ul>
<ul id="vue">
<li class="cat-item"><a href="/vue3/vue3-tutorial.html">Vue3 教程 <i class="fa fa-external-link" aria-hidden="true"></i></a></li>
<li class="cat-item"><a href="/vue/vue-tutorial.html">vue2 教程 <i class="fa fa-external-link" aria-hidden="true"></i></a>
</ul>
<ul id="bootstrap">
<li class="cat-item"><a href="/bootstrap/bootstrap-tutorial.html">Bootstrap3 教程 <i class="fa fa-external-link" aria-hidden="true"></i></a></li>
<li class="cat-item"><a href="/bootstrap4/bootstrap4-tutorial.html">Bootstrap4 教程 <i class="fa fa-external-link" aria-hidden="true"></i></a></li>
<li class="cat-item"><a href="/bootstrap5/bootstrap5-tutorial.html">Bootstrap5 教程 <i class="fa fa-external-link" aria-hidden="true"></i></a></li>
<li class="cat-item"><a href="/bootstrap/bootstrap-v2-tutorial.html">Bootstrap2 教程 <i class="fa fa-external-link" aria-hidden="true"></i></a>
</ul>
</div>
"""
html=etree.HTML(text)#调用HTML类进行初始化,text中有两个li节点未修复,自动修正HTML文本
re=etree.tostring(html)#调用tostring输出修正后HTML文本
e=re.decode("utf-8")#通过decode将bytes类型转str

打印结果为txt文本

with open("exe.txt","wb") as fs:
fs.write(re)
print("打印txt完毕!")

#打印结果为html文本
with open("exe.html","wb") as f:
    f.write(re)
    print("打印html完毕!")</code></pre>

将以上text文件存为a.html,则:

from lxml import etree

html=etree.parse("./a.html",etree.HTMLParser())
re=etree.tostring(html)
e=re.decode("utf-8")
with open("a.txt","wb") as fs:
fs.write(re)
print("打印txt完毕!")

结果如下:


<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><div class="col nav-sub">&#13;
	<ul id="python">&#13;
		<li class="cat-item"><a href="/python3/python3-tutorial.html">Python3 &#230;&#149;&#153;&#231;&#168;&#139; <i class="fa fa-external-link" aria-hidden="true"/></a></li>&#13;
		<li class="cat-item"><a href="/python/python-tutorial.html">Python2 &#230;&#149;&#153;&#231;&#168;&#139; <i class="fa fa-external-link" aria-hidden="true"/></a></li>&#13;
	</ul>&#13;
	<ul id="vue">&#13;
		<li class="cat-item"><a href="/vue3/vue3-tutorial.html">Vue3 &#230;&#149;&#153;&#231;&#168;&#139; <i class="fa fa-external-link" aria-hidden="true"/></a></li>&#13;
		<li class="cat-item"><a href="/vue/vue-tutorial.html">vue2 &#230;&#149;&#153;&#231;&#168;&#139; <i class="fa fa-external-link" aria-hidden="true"/></a></li>&#13;
	</ul>&#13;
	<ul id="bootstrap">&#13;
		<li class="cat-item"><a href="/bootstrap/bootstrap-tutorial.html">Bootstrap3 &#230;&#149;&#153;&#231;&#168;&#139; <i class="fa fa-external-link" aria-hidden="true"/></a></li>&#13;
		<li class="cat-item"><a href="/bootstrap4/bootstrap4-tutorial.html">Bootstrap4 &#230;&#149;&#153;&#231;&#168;&#139; <i class="fa fa-external-link" aria-hidden="true"/></a></li>&#13;
		<li class="cat-item"><a href="/bootstrap5/bootstrap5-tutorial.html">Bootstrap5 &#230;&#149;&#153;&#231;&#168;&#139; <i class="fa fa-external-link" aria-hidden="true"/></a></li>&#13;
		<li class="cat-item"><a href="/bootstrap/bootstrap-v2-tutorial.html">Bootstrap2 &#230;&#149;&#153;&#231;&#168;&#139; <i class="fa fa-external-link" aria-hidden="true"/></a></li>&#13;
	</ul>&#13;
</div></body></html>

 

标签:13,提取,&#,etree,html,168,网页,139,解析
From: https://www.cnblogs.com/cszr/p/17173762.html

相关文章

  • 第二章 网页制作的排版方法
    2.1文字与段落排版2.1.1段落标签在HTML(HyperTextMarkupLanguage,超文本标记语言)中,用于定义段落的标签是<p>。这个标签用于创建文本的一个段落。每个<p>标签内的内容默认会在其前后添加一些垂直间距(即外边距),以区分不同的段落。段落标签的语法为:<palign="leftcenterrigh......
  • 【Web APIs day02 事件绑定处理和事件对象、网页交互】
    WebAPIs-第二天笔记掌握事件绑定处理和事件对象,完成常见网页交互事件监听事件类型事件对象拓展知识综合案例事件监听以前写的代码都是自动执行的,我们希望一段代码在某个特定的时机才去执行,比如点击按钮可以弹出警示框比如鼠标经过显示下拉菜单等等事件事件是程......
  • 淘宝商品详情接口item_get响应参数解析:props、props_list、prop_img
    在电商数据分析和应用开发中,淘宝商品详情接口item_get是一个至关重要的工具。通过该接口,开发者可以高效地获取淘宝平台商品的详细信息,从而优化商品展示、搜索、推荐等功能,提升用户体验和转化率。本文将详细解析item_get接口的响应参数,帮助开发者更好地理解和使用该接口。一、......
  • 《深入解析:水果销售数据库操作与查询技巧》
    文章目录一、数据库结构与数据源插入1.1创建数据库与表1.2插入数据二、基础数据查询2.1查询客户信息2.2查询供应商信息三、查询优化与技巧3.1使用LIMIT子句四、高级查询技巧4.1使用聚合函数4.2连接查询4.3使用子查询五、案例分析5.1客户订单详情查询一......
  • 【艾思科蓝】前端框架巅峰对决:React、Vue与Angular的全面解析与实战指南
    【JPCS独立出版】​第三届能源与动力工程国际学术会议(EPE2024)_艾思科蓝_学术一站式服务平台更多学术会议请看:https://ais.cn/u/nuyAF3 引言在快速发展的前端技术领域,选择合适的框架或库对于项目的成功至关重要。React、Vue和Angular作为当前最流行的三大前端框架/库,各自......
  • LLM大模型: Denoising Diffusion Probabilistic Models 原理解析与核心代码
      根据文本生成图片是AI的核心应用之一,2020年后主流的生成方式都是基于DenoisingDiffusionProbabilisticModels原理的,逐渐替代了之前使用GAN的方式生成图片!那么DDPM为啥能取代GAN了?其优势在哪?或者说GAN的劣势在哪?  1、CLIP模型都知道吧?text和image都通过各自的enco......
  • 从数据仓库到数据中台再到数据飞轮:数据技术演进的全景解析
    引言数据分析每天都在帮助无数组织完成各种任务,从衡量环境、社会和治理影响到创造新的收入来源等。因此,没有建立强大数据文化的公司正感受到压力。越来越多的企业向需要数据驱动方面的帮助。然而,企业的需求通常是掩饰不住的困惑。他们难以明确表达自己的目标,或者不知道从哪里开始。......
  • ECMAScript与JavaScript的区别:深入解析与代码实践
    ECMAScript与JavaScript的区别:深入解析与代码实践在Web开发领域,ECMAScript(通常缩写为ES)和JavaScript是两个密不可分但又有所区别的概念。尽管它们之间有着紧密的联系,理解它们之间的区别对于开发者来说至关重要。本文将深入探讨ECMAScript与JavaScript的区别,并通过代码示例......
  • Oracle数据库高级技术解析与实战案例
    Oracle数据库高级技术解析与实战案例引言Oracle数据库作为企业级数据库市场的领导者,凭借其强大的数据处理能力、高可用性、可扩展性以及安全性,在各行各业得到了广泛应用。本文将深入探讨Oracle数据库的高级技术特性,并通过实际代码案例展示其在复杂业务场景中的应用。无论......
  • MySQL binlog解析工具binlog2sql使用示例
    binlog2sql是一个用于解析MySQL的二进制日志(Binlog)的工具,它可以将Binlog事件转换为SQL语句,这对于审计、数据同步等场景非常有用。binlog2sql通常用于实现MySQL数据的实时同步到其他数据库或系统中。安装binlog2sql首先,你需要安装binlog2sql。如果你使用的是Python环......