一、lxml庫介紹
lxml是Python的一個HTML/XML解析庫,可以解析HTML、XML以及各種文檔。lxml同時也是Python中最快速、最靈活的解析器之一,還支持XPath和CSS選擇器,並提供一些方便的API來遍歷文檔樹、從中提取數據以及修改元素。
基於C編寫,lxml的速度遠超Beautiful Soup等Python庫,是數據分析和Web爬蟲領域不可替代的工具。
二、簡單解析HTML文檔
在使用lxml解析HTML文檔之前,需要使用pip安裝lxml庫。
import requests from lxml import html url = 'https://www.baidu.com' response = requests.get(url) content = response.content tree = html.fromstring(content) print(tree)
代碼中,我們使用requests庫獲取百度首頁的HTML文檔,然後使用lxml庫的fromstring函數將文檔轉化為lxml.etree.Element對象,並列印出來。
三、XPath選擇器
XPath選擇器是lxml的重要功能之一,它提供了一種靈活並且高效的方式來選擇HTML文檔中的特定元素或者實現定位元素。
import requests from lxml import html url = 'https://www.baidu.com' response = requests.get(url) content = response.content tree = html.fromstring(content) result = tree.xpath('//title/text()') print(result)
代碼中,我們使用requests獲取百度首頁的HTML文檔,將文檔轉化為lxml.etree.Element對象,並使用XPath選擇器提取出文檔中title標籤的文本內容。運行上述代碼,可以得到返回結果為百度首頁的標題。
四、CSS選擇器
CSS選擇器也是lxml支持的選擇器之一,它語法簡單,直接,易於學習和使用。
import requests from lxml import html url = 'https://www.baidu.com' response = requests.get(url) content = response.content tree = html.fromstring(content) result = tree.cssselect('title')[0].text print(result)
代碼中,我們使用requests獲取百度首頁的HTML文檔,將文檔轉化為lxml.etree.Element對象,並使用CSS選擇器提取出文檔中title標籤的文本內容。運行上述代碼,可以得到返回結果為百度首頁的標題。
五、遍歷文檔樹
在解析HTML文檔時,我們通常需要遍歷整個文檔樹,以便訪問它的自己和子元素。lxml提供了一些API方便我們遍歷文檔樹。
import requests from lxml import html url = 'https://www.baidu.com' response = requests.get(url) content = response.content tree = html.fromstring(content) for element in tree.iter(): print(element.tag)
代碼中,我們使用requests獲取百度首頁的HTML文檔,將文檔轉化為lxml.etree.Element對象,並遍歷整個文檔樹,列印元素標籤名。
六、修改元素
解析HTML文檔後,我們還可以使用lxml庫修改HTML文檔中的元素,比如給文檔中所有的a標籤添加一個target屬性。
import requests from lxml import html url = 'https://www.baidu.com' response = requests.get(url) content = response.content tree = html.fromstring(content) for element in tree.iter('a'): element.set('target', '_blank') print(html.tostring(tree))
代碼中,我們使用requests獲取百度首頁的HTML文檔,將文檔轉化為lxml.etree.Element對象,然後遍歷所有的a標籤,給它們添加一個target屬性,並列印出修改後的HTML文檔。
七、總結
使用lxml庫可以快速、靈活地解析HTML文檔,並提取其中的數據,而且還支持XPath和CSS選擇器,以及遍歷文檔樹、修改元素等功能,是數據分析和Web爬蟲的利器。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/219578.html