lxml是一個功能豐富且簡單易用的Python XML、HTML文檔解析庫
Documentation
概述
lxml
是一個非常Pythonic的文檔解析工具包,依賴于C語言庫libxml2
和libslt
。它的獨特之處在于高效率與功能的完整性兼備,且提供了簡單易用Python原生API。最新版本的lxml
支持CPython2.6至3.6的版本。
下載
pip install lxml
# 可以通過pip直接進行下載使用
git clone https://github.com/lxml/lxml.git lxml
# 也可以從git克隆源碼進行下載
Module lxml.html
&lxml.etree
這是兩個最常用的HTML文檔和XML文檔解析模塊。
HTML(HyperText Markup Language) 超文本標記語言
XML(Extensible Markup Language) 可擴展標記語言
Class _Element(頂級基類)
object ---+
|
_Element
# =====================================
# Properties(屬性)
# =====================================
attrib # 元素屬性字典
base # 原始文檔的url或None
sourceline # 原始行數或None
tag # tag名
tail # 尾巴文本(存在于兄弟節點間,屬于父節點的文本內容)
text # 位于第一個子標簽之前的子文本
prefix # 命名空間前綴(XML)(詳解見底部附錄)
nsmap # 命名空間與URL映射關系(XML)(詳解見底部附錄)
# =====================================
# Instance Methods(實例方法)(常用)
# =====================================
xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
# 通過xpath表達式查找指定節點元素,返回指定節點元素列表或None
getparent(self)
# 查找父節點,返回找到的父節點對象或None
getprevious(self)
# 查找前一個相鄰的兄弟節點元素,返回找到的節點對象或None
getnext(self)
# 查找后一個相鄰的兄弟節點對象,返回找到的節點對象或None
getchildren(self)
# 返回所有直屬的子節點對象
getroottree(self)
# 返回所在文檔的根節點樹
find(self, path, namespaces=None)
# 根據標簽名或路徑,返回第一個匹配到的子節點對象
findall(self, path, namespaces=None)
# 根據標簽名或路徑,返回全部符合要求的子節點對象
findtext(self, path, default=None, namespaces=None)
# 根據標簽名或路徑,返回第一個匹配到的子節點對象的text文本
clear(self)
# 重置節點對象,清除所有子節點對象,以及所有的text、tail對象
get(self, key, default=None)
# 返回節點屬性key對應的值
items(self)
# 以任意順序返回節點屬性鍵和值
keys(self)
# 以任意順序返回包含節點全部屬性名的列表
values(self)
# 以任意順序返回包含節點全部屬性值的列表
set(self, key, value)
# 設置節點屬性
lxml.etree
object ---+
|
_Element ---+
|
ElementBase
# =====================================
Functions(函數)(常用)
# =====================================
HTML(text, parser=None, base_url=None)
# 將字符型HTML文檔內容轉換為節點樹對象
fromstring(text, parser=None, base_url=None)
# 將字符型XML文檔或文檔片段轉換問節點樹對象
tostring(element_or_tree, encoding=None, method="xml", xml_declaration=None, pretty_print=False, with_tail=True, standalone=None, doctype=None, exclusive=False, with_commments=True, inclusive_ns_prefixes=None)
# 將節點樹對象序列化為編碼的字符型
tounicode(element_or_tree, method="xml", pretty_print=False, with_tail=True, doctype=None)
# 將節點樹對象序列化為Unicode型
lxml.html
object ---+
|
etree._Element ---+
|
etree.ElementBase---+
|
object ---+ |
| |
HtmlMixin ---+
|
HtmlElement
# =====================================
Functions(函數)(常用)
# =====================================
fromstring(html, base_url=None, parser=None, **kwargs)
# 將字符型html文檔轉換為節點樹或文檔樹
tostring(doc, pretty_print=False, include_meta_content_type=False, encoding=None, method="html", with_tail=True, doctype=None)
# 將節點樹或文檔樹序列化為字符型
######################################
**Class HtmlMixin**
object ---+
|
HtmlMixin
# =====================================
Properties(屬性)
# =====================================
base_url # 文檔url
head # <head>標簽部分
body # <body>標簽部分
forms # 返回全部form列表
label # 元素的label標簽
classes # class屬性值的集合
# =====================================
Instance Methods(實例方法)(常用)
# =====================================
drop_tag(self)
# 移除標簽,但不移除其子標簽和text文本,將其合并到父節點
drop_tree(self)
# 移除節點樹(包含子節點和text),但不移除它的tail文本,將其合并到父節點或前一個兄弟節點
find_class(self, class_name)
# 根據class屬性值查找節點元素
get_element_by_id(self, rel)
# 根據id屬性值查找節點元素
set(self, key, value=None)
# 設置節點元素的屬性
text_content(self)
# 返回其后代節點與其自身的全部text內容