1. 程式人生 > >python爬蟲系列(3.2-lxml庫的使用)

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'))