Python 爬蟲 資料解析之Xpath和Lxml

2022-07-12 18:30:22 字數 2399 閱讀 7422

xpath(xml path language)是一門在xml和html文件中查詢資訊的語言,可用來在xml和html文件中對元素和屬性進行遍歷。

在 xpath 中,有七種型別的節點:元素、屬性、文字、命名空間、處理指令、注釋以及文件(根)節點。xml 文件是被作為節點樹來對待的。樹的根被稱為文件節點或者根節點。

使用//獲取整個頁面當中的元素,然後寫標籤名,然後在寫謂語進行提取,比如:

//title[@lang='en']
/和//的區別:/代表只獲取子節點,//獲取子孫節點,一般//用的比較多,當然也要視情況而定

contains:有時候某個屬性中包含了多個值,那麼可以使用contains函式,示例如下:

//title[contains(@lang,'en')]
謂詞中下標是從1開始的,不是從0開始的

謂語: 謂語用來查詢某個特定的節點或者包含某個指定的值的節點,被嵌在方括號中。 在下面的**中,我們列出了帶有謂語的一些路徑表示式,以及表示式的結果:

選取未知節點:xpath 萬用字元可用來選取未知的 xml 元素。

選取若干路徑:通過在路徑表示式中使用"|"運算子,您可以選取若干個路徑。

lxml 是 乙個html/xml的解析器,主要的功能是如何解析和提取 html/xml 資料。

from lxml import etree

text = '''

'''# 將字串解析為html文件

html = etree.html(text)

print(html)

# 按字串序列化html

result = etree.tostring(html).decode('utf-8')

print(result)

#讀取

html = etree.parse('hello.html')

result = etree.tostring(html).decode('utf-8')

print(result)

語法練習

from lxml import etree

html = etree.parse('hello.html')

# 獲取所有li標籤:

# result = html.xpath('//li')

# print(result)

# for i in result:

# print(etree.tostring(i))

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

# result = html.xpath('//li/@class')

# print(result)

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

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

# result = html.xpath('//li//span')

# print(result)

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

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

# print(result)

# 獲取最後乙個li的a的href屬性對應的值:

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

# print(result)

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

# result = html.xpath('//li[last()-1]/a')

# print(result)

# print(result[0].text)

# 獲取倒數第二個li元素的內容的第二種方式:

result = html.xpath('//li[last()-1]/a/text()')

print(result)

python爬蟲資料解析之xpath

xpath是一門在xml文件中查詢資訊的語言。xpath可以用來在xml文件中對元素和屬性進行遍歷。在xpath中,有7中型別的節點,元素,屬性,文字,命名空間,處理指令,注釋及根節點。節點 首先看下面例子 1.0 encoding iso 8859 1 en harry potter j k.ro...

python爬蟲 資料解析

解析的區域性的文字內容都會在標籤之間或者標籤對應的屬性中進行儲存 使用正規表示式,利用字串匹配篩選出所需要的內容 例 ex re是python中使用正規表示式的庫 page text是爬取到頁面的原始碼 使用上面定義的正則匹配規則進行解析,得到的url img src list re.findall...

Python爬蟲之資料解析和提取

獲取資料之後需要對資料進行解析和提取,需要用到的庫是beautifulsoup,需要在終端安裝 pip install beautifulsoup4 1 解析資料 bs物件 beautifulsoup 要解析的文字 解析器 解析器我們一般用python的內建庫 html.parser 示例 impo...