爬蟲標準庫Xpath

2021-10-10 21:34:09 字數 3228 閱讀 3928

xpath

全稱xml path language,是一門在xml文件中查詢資訊的語句,可用來在xml文件中對元素和屬性進行遍歷。「官方文件w3xpath」

安裝(windows)

~~pip install lxml~~ 豆瓣源	![pip  install  -i   lxml

xml和 html 的區別資料格式

描述作用

xml可擴充套件標記語言

用來傳輸和儲存資料

html

超文字標記語言

用來顯示資料

常見語法

表示式含義/

從根節點開始

//從任意節點

.從當前節點

…從當前節點的父節點

@選取屬性

text()

選取文字

常用用法

from lxml import etree

data = """

"""html = etree.html(data)#構造了乙個xpath解析物件。etree.html模組可以自動修正html文字。

li_list = html.xpath('//ul/li')#選取ul下面的所有li節點

#li_list = html.xpath('//div/ul/li')#選取ul下面的所有li節點

print(li_list)

a_list = html.xpath('//ul/li/a')#選取ul下面的所有a節點

print(a_list)

herf_list = html.xpath('//ul/li/a/@href')#選取ul下面的所有a節點的屬性herf的值

print(herf_list)

text_list = html.xpath('//ul/li/a/text()')#選取ul下面的所有a節點的值

print(text_list)

萬用字元萬用字元含義*

選取任何元素節點

@*選取任何屬性的節點

li_list = html.xpath('//li[@class="item-0"]')#選取class為item-0的li標籤

print(li_list)

text_list = html.xpath('//li[@class="item-0"]/a/text()')#選取class為item-0的li標籤 下面a標籤的值

print(text_list)

li1_list  = html.xpath('//li[@id="1"]')#選取id屬性為1的li標籤

print(li1_list)

li2_list  = html.xpath('//li[@data="2"]')#選取data屬性為2的li標籤

print(li2_list)

表示式表示式

含義[?]

選取第幾個節點

last()

選取最後乙個節點

last()-1

選取倒數第二個節點

position()-1

選取前兩個

li_list = html.xpath('//ul/li[1]')  # 選取ul下面的第乙個li節點

print(li_list)

li1_list = html.xpath('//ul/li[last()]')  # 選取ul下面的最後乙個li節點

print(li1_list)

li2_list = html.xpath('//ul/li[last()-1]')  # 選取ul下面的最後乙個li節點

print(li2_list)

li3_list = html.xpath('//ul/li[position()<= 3]')  # 選取ul下面前3個標籤

print(li3_list)

text_list = html.xpath('//ul/li[position()<= 3]/a/@href')  # 選取ul下面前3個標籤的裡面的a標籤裡面的href的值

print(text_list)

函式函式名

含義starts-with

選取以什麼開頭的元素

contains

選取包含一些資訊的元素

and並且的關係

or或者的關係

li_list = html.xpath('//li[starts-with(@class,"item-1")]')#獲取class包含以item-1開頭的li標籤

print(li_list)

li1_list = html.xpath('//li[contains(@class,"item-1")]')#獲取class包含item的li標籤

print(li1_list)

li2_list = html.xpath('//li[contains(@class,"item-0") and contains(@data,"2")]')#獲取class為item-0並且data為2的li標籤

print(li2_list)

li3_list = html.xpath('//li[contains(@class,"item-1") or contains(@data,"2")]')#獲取class為item-1或者data為2的li標籤

print(li3_list)

爬蟲之xpath解析庫

xpath語法 1.常用規則 1.nodename 節點名定位 2.從當前節點擊取子孫節點 3.從當前節點擊取直接子節點 4.nodename attribute 根據屬性定位標籤 div class ui main 5.attributename 獲取屬性 6.text 獲取文字 2.屬性匹配兩種...

xpath 爬蟲利器

用xpath的爬取網頁內容的初步了解 xpath提取文字內容 text 提取屬性內容 coding utf 8 author zjp from lxml import etree import requests url response1 requests.get url 獲取網頁響應 select...

爬蟲 xpath 匹配

從根標籤開始 必須具有嚴格的父子關係 從當前標籤 後續節點含有即可選出 import lxml.html test data 111111 29.99 222222 39.95 33333 40 123 萬用字元,選擇所有 div book 1 title 選擇div下第乙個book標籤的title...