python3 基于lxml解析html简介

背景

工作中需要解析html文件,正好知道lxml模块有这个功能,所以就用上了。不过是入门级别的使用,但大概也算对lxml模块的加深了一些了解。
lxml模块有很多功能,我目前主要用于处理xml和html。这个模块兼容大多数ElementTree API(python3中用于处理xml的模块),并且更加优秀。
个人认为,lxml的优势在于功能强大,提供很多API来完成各种任务。劣势就在于提供API太多,一般情况下是在一堆API选取几个来使用,所以想短时间内掌握这个模块是比较困难的。

例子

见GetXML对象中ReadHtml方法。

import xml.etree.ElementTree as ET
from lxml import etree

class GetXML:
	'提供读取XML文件和读取值得一些方法'
	def __init__(self):
		pass

	def Read(self,xmlfilename):
		'将XML文件解析为树,并且得到根节点'
		#tree = ET.ElementTree(file=xmlfilename)
		tree = etree.parse(xmlfilename)
		self.root = tree.getroot()
		return self.root

	def Iter(self):
		'递归迭代xml文件中所有节点(包含子节点,以及子节点的子节点)'
		return self.root.iter()

	def FindAll(self,tag):
		'查找节点为tag的所有直接子元素'
		#直接子元素的意思:只会查找当前节点的子节点那一级目录
		return self.root.findall(tag)

	def Find(self,tag):
		'查找第一个节点为tag的直接子元素'
		return self.root.find(tag)

	def ReadHtml(self,htmlfilename):
		'解析html文件,返回一个支持xPath语法解析html的对象'
		#创建自定义解析器
		parser = etree.HTMLParser(encoding='GBK')
		#解析html文件,返回一个<class 'lxml.etree._ElementTree'>对象
		htmlelement = etree.parse(htmlfilename, parser = parser)
		#返回一个一个字符串,包含html中的所有内容
		html = etree.tostring(htmlelement, encoding='utf-8').decode('utf-8')
		#生成一个支持xpath解析的对象
		html = etree.HTML(html)
		return html

该方法使用的接口都可以在官方文档里找到,具体的学习建议面对官方文档。
https://lxml.de/index.html

再贴一个入门的示例

在这里插入图片描述

最后

lxml模块是强大的,这里只是简单介绍了部分功能以及使用少量的几个API。强烈建议需要使用这个模块的同学,去官方文档中了解该模块的各个子模块中的各个API。因为API真的太多了~~~~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值