1. 程式人生 > >lxml模組

lxml模組

1、lxml介紹

lxml是一個HTML/XML的解析器,主要的功能是如何解析和提取HTML/XML資料。

2、lxml解析HTML程式碼:

可以用來解析HTML程式碼,並且在解析HTML程式碼的時候,如果程式碼不規範,會自動進行補全。

#匯入包
form lxml import etree
text='''<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> # 注意,此處缺少一個 </li> 閉合標籤
     </ul>
 </div>
'''
#利用etree.HTML將字串解析為HTML文件
html=etree.HTML(text)
result=etree.tostring(html)#將字串序列化為HTML文件

3、html檔案讀取

#從檔案中讀取html程式碼:利用etree.parse()方法
from lxml import etree
html=etree.parse('xx.html')#讀取外部檔案xx.html
result=etree.tostring(html,pretty_print=True)
print(result)

4、在lxml中使用xpath語法:

    4.1獲取所有li標籤

from lxml import etree
text='''<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"><span class="bold">third item</span></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></li>
     </ul>
 </div>
'''
html=etree.HTML(text)
lis=html.xpath("//li")
print(lis)

    4.2獲取所有li元素下的所有class屬性的值

result=html.xpath("//li/@class")

    4.3獲取li標籤下href為www.baidu.com的a標籤:

result=html.xpath("//li/a[@href='www.baidu.com']")

    4.4獲取li標籤下所有span標籤:

result=html.xpath("//li/span")

    4.5獲取li標籤下的a標籤裡的所有class:

result=html.xpath("//li/a//@class")

    4.6獲取最後一個li 的a的href屬性對應的值:

result=html.xpath("//li[last()]/a/@href")

    4.7獲取倒數第二個li元素的內容

第一種方法:result=html.xpath("//li[last()-1]/a")
第二種方法:result=html.xpath("//li[last()-1]/a/text()")