python中split使用方法(python lxml中etree的简单应用)
python中split使用方法
python lxml中etree的简单应用我一般都是通过xpath解析dom树的时候会使用lxml的etree,可以很方便的从html源码中得到自己想要的内容。
这里主要介绍一下我常用到的两个方法,分别是etree.html()和etree.tostrint()。
1.etree.html()
etree.html()可以用来解析字符串格式的html文档对象,将传进去的字符串转变成_element对象。作为_element对象,可以方便的使用getparent()、remove()、xpath()等方法。
如果想通过xpath获取html源码中的内容,就要先将html源码转换成_element对象,然后再使用xpath()方法进行解析。例如,这里有一段最简单的html源码:"<html><body><h1>this is a test</h1></body></html>",现在想要得到h1标签中的文本,可以这样实现:
|
# encoding=utf8 from lxml import etree html = '<html><body><h1>this is a test</h1></body></html>' # 将html转换成_element对象 _element = etree.html(html) # 通过xpath表达式获取h1标签中的文本 text = _element.xpath( '//h1/text()' ) print 'result is: ' , text |
结果:
result is: ['this is a test']
通过结果可以知道,xpath()方法放回的结果是一个列表,所以通常在取xpath()方法结果的时候,只取列表中的第一个元素。
2.etree.tostring()
etree.tostring()方法用来将_element对象转换成字符串。一般通过简单的xpath表达式无法得到想要的内容的时候我就会用该方法。例如,将上面的html小改动一下:"<html><body><h1>this <a>is a </a>test</h1></body></html>",这时候如果想要得到h1中的文本该怎么办呢?使用“//h1/text()”试试(将上面的html保存并用火狐浏览器打开,然后在firepath中输入该xpath表达式):
通过截图左下角的提示可以知道,使用xpath表达式“//h1/text()”只能得到h1标签中文本的“this”和“test”,用代码实现看看:
|
# encoding=utf8 from lxml import etree html = '<html><body><h1>this <a>is a </a>test</h1></body></html>' _element = etree.html(html) text = _element.xpath( '//h1/text()' ) print 'result is: ' , text |
运行结果:
result is: ['this ', 'test']
确实,使用xpath()方法,只能得到h1中部分文本内容,我们再试试使用“//h1//text()”看看:
然后通过代码实现看看:
|
# encoding=utf8 from lxml import etree html = '<html><body><h1>this <a>is a </a>test</h1></body></html>' _element = etree.html(html) text = _element.xpath( '//h1//text()' ) print 'result is: ' , text |
运行结果:
result is: ['this ', 'is a ', 'test']
通过“//h1//text()”表达式确实可以得到想要的内容,但是得到的是一个列表,还需要将列表中的所有元素“拼”起来才行,是不是有点麻烦。这时候,就可以考虑使用etree.tostring()方法了,etree.tostring()方法可以传递多个参数,包括element_or_tree、encoding、method等,其中method参数为text的时候,表示返回_element对象中的所有文本,所以可以这样:
|
# encoding=utf8 from lxml import etree html = '<html><body><h1>this <a>is a </a>test</h1></body></html>' _element = etree.html(html) # 先找到h1对象,然后通过etree.tostring方法找到h1对象中的所有文本 _h = _element.xpath( '//h1' ) # 注意,xpath方法返回的是一个列表,我们需要的是列表中的第一个元素:代表h1标签的_element对象 result = etree.tostring(_h[ 0 ], method = 'text' ) print 'result is: ' , result |
运行结果:
result is: this is a test
这时候使用etree.tostring()方法是不是很容易的就解决问题了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/u012067766/article/details/79903455
- python中if条件语句如何使用(Python中如何使用if语句处理列表实例代码)
- python函数的参数有几种类型(在Python中居然可以定义两个同名参数的函数)
- python2.7中logging的使用方式(Python中使用logging和traceback模块记录日志和跟踪异常)
- python图形绘制教程(python绘制漏斗图步骤详解)
- python中numpy常用函数(使用Python的SymPy库解决数学运算问题的方法)
- python排序的三种方法(Python实现插入排序和选择排序的方法)
- python 摄像头运用(使用Python控制摄像头拍照并发邮件)
- python小程序编程代码(python实现烟花小程序)
- python爬虫request方法介绍(详解Python3网络爬虫二:利用urllib.urlopen向有道翻译发送数据获得翻译结果)
- python使用门算法加密文件(python实现可逆简单的加密算法)
- python dict 操作(Python中dict和set的用法讲解)
- Python实现合并两个有序链表的方法示例(Python实现合并两个有序链表的方法示例)
- pythonmatplotlib散点图怎么画(python使用matplotlib画柱状图、散点图)
- python 验证码识别模块([机器视觉]使用python自动识别验证码详解)
- opencv抠出边缘检测的图形(python opencv实现图像边缘检测)
- 用python做一个表白视频(python仿抖音表白神器)
- 终于来了,淘宝更改账户名测试中,快去看看你能不能修改(淘宝更改账户名测试中)
- 淘宝支持账号名修改,网友 终于可以 重新做人 了(淘宝支持账号名修改)
- 盘点那些年让人称奇的年终奖 最后一个赢辣条毫无悬念(盘点那些年让人称奇的年终奖)
- 你还没有升职吗 他竟因为几套激励理论,升职了(你还没有升职吗)
- 某知名企业绩效管理体系及薪酬分配体系操作手册(某知名企业绩效管理体系及薪酬分配体系操作手册)
- 职场人改不掉这4个习惯,只会越混越穷,一辈子也翻不了身(职场人改不掉这4个习惯)
热门推荐
- dedecms制作的网站如何发布(DedeCms后台添加编辑文章空白的解决方法)
- 如何去阿里云解析域名(利用Python+阿里云实现DDNS动态域名解析的方法)
- 跨站请求伪造的几个解决方法
- 查看SQL SERVER中指定数据库所有表的字段信息
- 数据库的sql语句怎么写(数据库常用的sql语句汇总)
- python中字典的常用操作(11个Python3字典内置方法大全与示例汇总)
- vue项目打包上线的方法(vue项目打包以及优化的实现步骤)
- stylus、sass、less区别
- 如何使用github中的python库(使用GitHub和Python实现持续部署的方法)
- dedecms手机页面怎么固定(织梦dedecms配置手机wap站点并绑定二级域名)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9