python爬蟲系列(3.2-lxml庫的使用)
一、基本介紹
1、lxml 是 一個HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 資料。
2、lxml和正則一樣,也是用 C 實現的,是一款高效能的 Python HTML/XML 解析器,我們可以利用之前學習的XPath語法,來快速的定位特定元素以及節點資訊。lxml python官方文件:
3、安裝庫
pip3 install lxml
1、直接解析HTML程式碼,並且在解析HTML程式碼的時候,如果HTML程式碼不規範,他會自動的進行補全程式碼
from lxml import etree
text = '''
<div>
<ul>
<li class="item-0"><a href="link1.html">第一個item</a></li>
<li class="item-1"><a href="link2.html">第二個item</a></li>
<li class="item-inactive"><a href="link3.html">第三個item</a></li>
<li class="item-1"><a href="link4.html">第四個item</a></li>
<li class="item-0"><a href="link5.html">第五個item</a> # 注意,此處缺少一個 </li> 閉合標籤
</ul>
</div>
'''
html = etree.HTML(text)
print(type(html)) # 資料型別 <class 'lxml.etree._Element'>
result = etree.tostring(html, encoding="utf8") # 使用utf8編碼轉換
print(result.decode("utf8"))
2、使用tostring()方法即輸出修正後的HTML程式碼
1、直接使用etree.parse(檔案路徑)
from lxml import etree
html = etree.parse('./demo.html')
result = etree.tostring(html, encoding='utf8')
print(result.decode('utf8'))
1、當代碼不規範的時候就需要指定解析器
from lxml import etree
parser = etree.HTMLParser(encoding='utf8')
html = etree.parse('./demo.html', parser=parser)
result = etree.tostring(html, encoding='utf8')
print(result.decode('utf8'))