Skip to content

Latest commit

 

History

History
200 lines (134 loc) · 3.64 KB

File metadata and controls

200 lines (134 loc) · 3.64 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0528
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

语法 html 属性 text 文本

回忆

  • 上次了解了

    • 深度优先遍历函数
    • iter()
  • iter()

    • 是迭代器函数
    • 可以元素
    • 深度优先遍历

图片描述

  • 怎么 把etree上的文本
    • 输出来着?🤔

动手

  • 输出网页纯文本
from lxml import etree
et_html = etree.Element ("html" )
etree.SubElement(et_html, "head" )
etree.SubElement(et_html[0], "title").text = "oeasy"
etree.SubElement(et_html, "body").text = "o2z"
etree.SubElement(et_html[1], "h1").text = "o3z"
et_html[1][0].tail = "o4z"
print(etree.tostring(et_html,method="text").decode())
  • 输出结果

图片描述

  • 除了method 之外
    • tostring 还有啥参数?

不输出tail

  • 对着 tostring 喊救命(help)
help(etree.tostring)
  • 观察参数

图片描述

  • 可以在 tostring 函数中
    • 用 with_tail=False 参数控制 tail 成员不显示

尝试

print(etree.tostring(et_html[1][0],method="text").decode())
print(etree.tostring(et_html[1][0],method="text",with_tail=False).decode())
  • 对比

图片描述

  • 确实把tail省略了

图片描述

继续

  • html元素
    • 有属性 lang
    • 值 为 zh-cn

图片描述

  • 这 属性 是 生成的 呢?

观察

et_html.
  • 按下Tab进行提示

图片描述

  • 这属性看起来像什么?

喊救命

help(et_html.attrib)
  • 这个attrib 说是 很像字典

图片描述

  • 我们就把attrib当成字典

添加属性

  • 将lang
    • 这个key的value
    • 设置为zh_Hans
et_html.attrib["lang"] = "zh_Hans"
print(etree.tostring(et_html,pretty_print=True).decode())

  • attrib成员
    • 类型 确实是 字典
    • 存放着 元素键值对

图片描述

  • 怎么访问key为lang 的字典项呢?

访问

et_html.attrib
et_html.attrib["lang"]
  • 效果

图片描述

  • 如果元素有两个属性呢?

两个属性

et_html.attrib["lang"] = "zh_Hans"
et_html.attrib["id"] = "root"
print(etree.tostring(et_html,pretty_print=True).decode())

  • 能看到 两个属性 吗?

图片描述

  • 可以看到

分别访问

et_html.attrib
et_html.attrib["lang"]
et_html.attrib["id"]

  • 还可以分别访问

图片描述

总结

  • 了解 了 etree.tostring() 函数参数
    • method = "text"
      • 可以控制输出结果只包含 text 和 tail
    • pretty_print = True
      • 可以控制输出结果包含缩进信息
    • with_tail = False
      • 可以控制输出结果不包含 tail
属性 英文
tag 标签
text 文本
tail 尾巴
attrib 属性
  • etree上 除了etree.Element
    • 还有 呢?
  • 下次再说👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。