前言

lxml是一种使用Python编写的库,可以迅速、灵活地处理XML和HTML,学过xpath定位的,可以立马上手

使用环境:

python3.7

lxml 4.3.3

lxml安装

pip install lxml,安装报错;指定版本为4.4.3时,安装成功

pip show lxml查看版本号

html解析

这里用到etree.HTML方法把html的文本内容解析成html对象

要打印html内容,可以用etree.tostring方法,encoding="utf-8"参数可以正常输出html里面的中文内容。pretty_print=True是以标准格式输出

# coding:utf-8

from lxml import etree

htmldemo = '''

yoyo ketang

yoyoketang

这里是我的微信公众号:yoyoketang

fiddler教程,

python笔记,

selenium文档;

快来关注吧!

...

'''

# etree.HTML解析html内容

demo = etree.HTML(htmldemo)

# 打印解析内容str

t = etree.tostring(demo, encoding="utf-8", pretty_print=True)

print(t.decode("utf-8"))

运行结果

yoyo ketang

yoyoketang

这里是我的微信公众号:yoyoketang

fiddler教程,

python笔记,

selenium文档;

快来关注吧!

...

soupparser解析器

soupparser解析器比上面的etree.HTML容错性要好一点,因为其处理不规范的html能力比etree强太多。

import lxml.html.soupparser as soupparser

demo = soupparser.fromstring(htmldemo)

t = etree.tostring(demo, encoding="utf-8", pretty_print=True)

print(t.decode("utf-8"))

xpath使用案例

使用html解析器,最终是想获取html上的某些元素属性和text文本内容,接下来看下,用最少的代码,简单高效的找出想要的内容。

比如要获取“这里是我的微信公众号:yoyoketang

# coding:utf-8

from lxml import etree

htmldemo = '''

yoyo ketang

yoyoketang

这里是我的微信公众号:yoyoketang

fiddler教程,

python笔记,

selenium文档;

快来关注吧!

...

'''

# etree.HTML解析html内容

demo = etree.HTML(htmldemo)

rs=demo.xpath('//p[@class="yoyo"]')

t=rs[0].text

print(t)

运行结果:

从代码量上看,简单的三行代码就能找到想要的内容了,rs是xpath定位获取到的一个list对象,会找出所有符合条件的元素对象。可以用for循环查看详情。

# coding:utf-8

from lxml import etree

htmldemo = '''

yoyo ketang

yoyoketang

这里是我的微信公众号:yoyoketang

fiddler教程,

python笔记,

selenium文档;

快来关注吧!

...

'''

# etree.HTML解析html内容

demo = etree.HTML(htmldemo)

rs=demo.xpath('//p[@class="yoyo"]')

print(rs) #list对象

for j in rs:

#打印定位到的内容

print(etree.tostring(j,encoding="utf-8",pretty_print=True).decode("utf-8"))

print(j.attrib)

运行结果

[]

这里是我的微信公众号:yoyoketang

fiddler教程,

python笔记,

selenium文档;

快来关注吧!

{'class': 'yoyo'}

二次查找

通过xpath定位语法//p[@class="yoyo"]定位到的是class="yoyo"这个元素以及它的所有子节点,如果想定位其中一个子节点,可以二次定位,继续xpath查看,如获取:python笔记

# coding:utf-8

from lxml import etree

htmldemo = '''

yoyo ketang

yoyoketang

这里是我的微信公众号:yoyoketang

fiddler教程,

python笔记,

selenium文档;

快来关注吧!

...

'''

# etree.HTML解析html内容

demo = etree.HTML(htmldemo)

rs=demo.xpath('//p[@class="yoyo"]')

print(rs[0].text)

rs1=rs[0].xpath('//a[@id="link2"]')

print(rs1[0].text)

rs2=demo.xpath('//a[@id="link2"]')

print(rs2[0].text)

运行结果

Xpath

注意

etree.toString()返回的是bytes类型,需要调用decode方法将其转换成String类型

经过处理后的html代码,会被自动修复,添加缺少的标签。

python etree htm参数_python笔记1--lxml.etree解析html相关推荐

  1. python etree htm参数_使用etree.HTML的编码问题

    title: 使用etree.HTML的编码问题 date: 2015-10-07 17:56:47 categories: [Python] tags: [Python, lxml, Xpath] ...

  2. python获取命令行参数_Python获取命令行参数的正确方法,案例详解

    最近编写一个python程序的时候,需要去获取python命令行的参数,因此这里记录下如何获取命令行参数的方法. 一.sys 模块 在 Python 中,sys 模块是一个非常常用且十分重要的模块,通 ...

  3. python 命令行 参数_Python命令行参数

    python 命令行 参数 Python Command line arguments are input parameters passed to the script when executing ...

  4. python 接收外部参数_python 接收处理外带的参数方法

    python 接收处理外带的参数方法 在执行python 代码的时候,有时候需要传递外面的参数进行处理 这个该怎么实现呢? 需要一个模块 from sys import argv 当然也可以直接只导入 ...

  5. python locust提取参数_python+locust性能测试学习笔记

    前言 Locust(俗称 蝗虫)一个轻量级的开源压测工具,基本功能是用Python代码描述所有测试.不需要笨拙的UI或庞大的XML,只需简单的代码即可. 环境安装 Locust支持Python 2.7 ...

  6. python open函数参数_python open函数的用法笔记

    file = open('apple.txt', 'w') open函数第一个参数是文件名称(包括路径),第二个参数是操作模式. 对于第二个参数有如下的选择: w:向文件写入内容 a:追加写入,就是不 ...

  7. python编程财务应用_Python笔记 财务小白的 day6 python编程基础(4)

    [转眼已到2020年.最近3个月真是成堆的压力.春节前稍微闲下来一丢丢,继续开始更新Python自学笔记.] CH6 字符串操作 1.处理字符串 (1)字符串中有引号如何处理. a.双引号 image ...

  8. python自定义函数参数_python自定义函数的参数之四种表现形式

    (1)def a(x,y):print x,y 这是最常见的定义方式,调用该函数,a(1,2)则x取1,y取2,形参与实参相对应,如果a(1)或者a(1,2,3)则会报错 (2)def a(x,y=3 ...

  9. python常用模块用法_python笔记之常用模块用法分析

    python笔记之常用模块用法分析 内置模块(不用import就可以直接使用) 常用内置函数 help(obj) 在线帮助, obj可是任何类型 callable(obj) 查看一个obj是不是可以像 ...

最新文章

  1. 技术“摸鱼” 大神,国外小哥 5 年白拿 45 万工资!
  2. 《走进SAP(第2版)》——2.5 SAP NetWeaver简介
  3. spring + mina 作为客户端解析H2协议的使用总结
  4. 这届年轻人连穷都不怕,还会怕冷?
  5. hashset去重原理_Java之HashSet,Linkedset常用功能以及介绍
  6. Notepad++ 简单使用
  7. 同质异质网络——(F(fraud) A(Analytics) UDPSNT(Wylie_2015))
  8. 全员远程办公,半年入 1 亿美元:GitHub 的最大竞争对手上市了
  9. Modern Python Cookbook》(Python经典实例)笔记 2.3 编写长行代码
  10. 基于HTML5 WebGL 与 GIS 的智慧机场大数据可视化分析
  11. 富士通Fujitsu DPK8400E+ 打印机驱动
  12. 成形滤波器(利用FDATOOL设计成形滤波器)
  13. 月报总结|Moonbeam 11月份大事一览
  14. Springboot工程配置htpps证书
  15. Unity3D-network网络相关(一)
  16. ipsec-***过程
  17. R 中关闭科学记数法
  18. 泰山OFFICE技术讲座:中英文间隔,间隔以哪个字体为准?
  19. 微型计算机之哈佛架构是什么?
  20. 禁止ubuntu更新内核

热门文章

  1. SVN被锁定的几种解决方法
  2. IDEA中创建maven项目后解决main文件夹下目录不全的问题
  3. 解决 android 高低版本 webView 里内容 自适应屏幕的终极方法
  4. Android Retrofit+RxJava 优雅的处理服务器返回异常、错误
  5. 解决 “OperationalError: (sqlite3.OperationalError) no such table: ...“问题
  6. java 异常的捕获及处理
  7. 解决oracle11g的ORA-12505问题
  8. 如何解决:“ UnicodeDecodeError:#39;ascii#39;编解码器无法解码字节”
  9. 对象是空的吗? [重复]
  10. 功能GUI编程是否可行? [关闭]