@nemos
        
        2017-05-06T02:02:21.000000Z
        字数 2051
        阅读 839
    py
<bookstore><book><title>Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price></book></bookstore>
- 表达式 = 描述- nodename = 选取此节点所有的子节点- / = 从根节点开始选取- // = 选取此节点下所有节点不考虑其相对位置- . = 选取当前节点- .. = 选取当前节点的父节点- @ = 选取属性
- 路径表达式 = 结果- bookstore = 选取bookstore元素所有子节点- /bookstore = 选取元素bookstore- / = 由/开始始终表示绝对路径- bookstore/book = 选取属于bookstore节点的所有book元素- //book = 选取所有book元素不管他们在文档中位置- bookstore//book = 选取所有属于bookstore元素的后代元素,不管他们在bookstore下的什么位置- //@lang = 选取名为lang的所有属性
- 查找某个特定节点或包含某个特定值的节点- 谓语被嵌在方括号中* 路径表达式 = 结果* /bookstore/book[1] = 选取bookstore下的第一个book元素* /bookstore/book[last()] = 选取bookstore下的最后一个book元素* /bookstore/book[last()-1] = 选取bookstore下的倒数第二个book元素* /bookstore/book[position()<3] = 选取bookstore下的前前两个book元素* //title[@lang] = 选取所有拥有lang属性的title元素* //title[@lang ='eng'] = 选取所有拥有title属性且值为eng的title元素* bookstore/book[price>10.00]/title = 不解释
- 通配符 = 描述- '*' = 匹配任何元素节点- @* = 匹配任何属性节点- node() = 匹配任何类型的节点- | = 选取若干路径
- 表达式 = 结果- //title[@*] = 选取所有带属性的title元素- //title | //price = 选取所有title和price元素
<div><ul><li class="item-0"><a href="link1.html">first item</a></li><li class="item-1"><a href="link2.html">second item</a></li><li class="item-inactive"><a href="link3.html">third item</a></li><li class="item-1"><a href="link4.html">fourth item</a></li><li class="item-0"><a href="link5.html">fifth item</a></ul></div>
from lxml import etreehtml = etree.HTML(text) #初始化html对象并优化html = etree.parse(file.txt) #从文件中初始化html对象result = etree.tostring(html) #转换字符串
lxml.etree._ElementTree = etree.HTML(text)resultlist = lxml.etree._ElementTree.xpath('//li')type(resultlist[0]) = lxml.etree._Element
valuelist = html.xpath('//li/@class') #获得所有li标签的class属性的值lxml.etree._Element = html.xpath('//li/a[@href="link1.html"]') #获得特定值得a标签lxml.etree._Element = html.xpath('//*[@class="bold"]') #获得所有class属性值为bold的元素
lxml.etree._Element.tag #获得标签名lxml.etree._Element.text #获得元素内容