python爬蟲(4) xpath表示式

2021-10-01 04:20:36 字數 4431 閱讀 7294

xpath表示式

xpath介紹和lxml安裝

xpath介紹

lxml安裝

解析字串格式的html

解析本地html檔案

按標籤名獲取內容

按屬性獲取標籤

獲取標籤的屬性

獲取子標籤

獲取標籤內容和標籤名

# xpath表示式  只能處理html文件,但是比正規表示式更加簡單

# xpath是將html文件轉換成xml文件,然後xpath查詢html節點或元素

# 按照xpath:pip install lxml

xpath表示式是基於lxml模組的

在dos視窗使用命令:pip install lxml

# 注意,可能由於版本的原因,pycharm無法成功匯入使用etree,那麼可以降低lxml版本

# etree.html()將字串解析成了特殊的html物件

h = etree.html("hello world,hello 張三")

# etree.tostring()將html物件轉成字串格式

print(etree.tostring(h, encoding="utf-8")) # encoding="utf-8"處理中文

控制台列印:

b'hello world,hello \xe5\xbc\xa0\xe4\xb8\x89

'

data.html

python**:

from lxml import etree

# 解析本地html檔案

# 建立html解析器,如果不建立將按照xml來解析會報錯

parser = etree.htmlparser(encoding="utf-8")

# 獲取本地html文件

html = etree.parse(r"data.html", parser=parser)

# 將html物件轉換成字串格式

print(etree.tostring(html, encoding="utf-8").decode())

控制台列印:

data.html

這是乙個測試html文件

這是乙個測試html文件

這是乙個測試html文件

python**

from lxml import etree

# 解析本地html檔案

# 建立html解析器,如果不建立將按照xml來解析會報錯

parser = etree.htmlparser(encoding="utf-8")

# 獲取本地html文件

html = etree.parse(r"data.html", parser=parser)

# 獲取所有的h2標籤的資訊,返回乙個列表

result = html.xpath("//h2")

# 獲取第乙個h2標籤的內容

print(result[0].text)

# 迴圈遍歷列表

for i in result:

print(i.text) # text是列印值

控制台列印:

這是乙個測試html文件

這是乙個測試html文件

這是乙個測試python文件

data.html

python**:

from lxml import etree

# 解析本地html檔案

# 建立html解析器,如果不建立將按照xml來解析會報錯

parser = etree.htmlparser(encoding="utf-8")

# 獲取本地html文件

html = etree.parse(r"data.html", parser=parser)

# 獲取li標籤中的class="item-3"的標籤

result = html.xpath("//li[@class='item-3']") # 其中li是標籤名,class是屬性名

# 列印

print(result[0].text)

# 獲取li標籤下的所有a標籤,其中屬性值為href="#"

result2 = html.xpath("//li/a[@href='#']") # //li/a表示li標籤下的a標籤,內放屬性值,其中以@符合標記

# 列印

print(result2[0].text)

控制台列印:

豬八戒

孫悟空

data.html

python**

from lxml import etree

# 獲取標籤的屬性

# 建立html解析器,如果不建立將按照xml來解析會報錯

parser = etree.htmlparser(encoding="utf-8")

# 獲取本地html文件

html = etree.parse(r"data.html", parser=parser)

# 獲取li標籤的class屬性

result = html.xpath("//li/@class") # 其中li是標籤名,class是屬性名

# 列印

print(result)

控制台列印:

['item-1', 'item-2', 'item-3', 'item-4', 'item-5']
data.html

python**

from lxml import etree

# 獲取子標籤

# / 乙個斜槓表示獲取下一級的子標籤

# // 兩個斜槓表示獲取所有符合條件的子標籤

# 建立html解析器,如果不建立將按照xml來解析會報錯

parser = etree.htmlparser(encoding="utf-8")

# 獲取本地html文件

html = etree.parse(r"data.html", parser=parser)

# 獲取li標籤下的a標籤

result = html.xpath("//li/a") # 其中li是標籤名,a是li標籤下的子標籤

# 列印

print(result[0].text)

# 獲取ul下所有的a標籤

result2=html.xpath("//ul//a")

print(result2[0].text)

控制台列印:

孫悟空

孫悟空

data.html

python**

from lxml import etree

# 獲取標籤內容和標籤名

# 建立html解析器,如果不建立將按照xml來解析會報錯

parser = etree.htmlparser(encoding="utf-8")

# 獲取本地html文件

html = etree.parse(r"data.html", parser=parser)

# 獲取第四個li元素下的a標籤的內容

result = html.xpath("//li[last()-3]/a") # 其中li是標籤名,a是li標籤下的子標籤

# 列印

print(result[0].text)

# 獲取class值為item-3的標籤名

result2 = html.xpath("//*[@class='item-3']") # *表示獲取所有標籤,[@class='item-3']為條件即所有class為item-3的標籤

print(result2[0].tag) # tag是獲取標籤名

控制台列印:

孫悟空

li

Python自學 爬蟲(4)xpath

pip install lxml 獲取根目錄下的html標籤物件 import requests from lxml import etree res requests.get html etree.html res.content.decode utf 8 html data html.xpath...

python 爬蟲 4 資料解析 xpath

html中的結構可能是棵樹,不一定是二叉樹,可能是多叉的。這時用xpath定位,解析會比較合適。語法 1.解析本地儲存 tree etree.parse filename 2.解析網上爬取 tree etree.html page text 3.標籤定位 tree.xpath html head 定...

Python爬蟲 bs4 xpath基本語法

標籤定位 提取標籤 標籤屬性中儲存的資料值 例項化乙個beautifulsoup物件,並且將頁面原始碼資料載入到該物件中 通過呼叫beautifulsoup物件中相關的屬性或者方法進行標籤定位和資料提取 環境安裝 pip install bs4 pip install lxml如何例項化beauti...