lxml模組
阿新 • • 發佈:2018-12-08
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()")