xpath教程 通過ID和Class檢索 轉

2022-03-13 03:03:40 字數 2764 閱讀 4547

先定義html**塊【這次只從body開始】

class="container">

id="first">

class="one">都市div>

class="two">德瑪西亞div>

class="two">王牌對王牌div>

class="spe">特殊位置div>

a>

div>

id="second">

class="three">水電費div>

class="three">說的話房間不開封div>

class="four">三頓飯黑客技術div>

div>

id="third">

class="three">水電費div>

class="three">說的話房間開封div>

div>

div>

body>

"""再準備python

**塊

from lxml import etree

html = etree.html(html_str)

任務一:獲取類名為one的文字值

解決這個問題,有非常簡單的xpath路徑,直接匹配html**中的class,然後獲取文字值就行

**如下:

print(html.xpath('.//div[@class="one"]/text()'))
結果:['都市']這裡需要解釋多個地方: - @的作用:表示屬性,div屬於標籤,它有自己的屬性,例如classid等等。 - 點 . 的作用:表示當前位置;與其對應的是雙點 .. :表示上一層級的位置 - 雙斜槓 // 的作用:查詢當前標籤下所有子級中搜尋;與其對應的是單斜桿 / ,這個標籤標籤下一層所有中搜尋。【後面兩個任務是這點的練習】

任務二:獲取id為first下,第一層子級div標籤的文字值

只需要獲取第一層,使用單斜桿就足夠了,xpath路徑如下:

print(html.xpath('.//div[@id="first"]/div/text()'))
結果:['都市', '德瑪西亞', '王牌對王牌']任務三:獲取id為first下,所有層級div標籤的文字值

print(html.xpath('.//div[@id="first"]//div/text()'))
結果:['都市', '德瑪西亞', '王牌對王牌', '特殊位置']任務四:獲取id為second下,所有類為threediv標籤的文字值

指定id為second,並且子級div的類名是three,然後是獲取文字,則xpath如下

print(html.xpath('.//div[@id="second"]/div[@class="three"]/text()'))
結果:['水電費', '說的話房間不開封']任務五:獲取所有類為threediv標籤的文字值

觀察html**塊,會發現類為threediv標籤在幾個地方,所以這裡最好的方法就是全域性範圍內的直接搜尋,簡單粗暴的xpath如下:

print(html.xpath('.//div[@class="three"]/text()'))
結果:['水電費', '說的話房間不開封', '水電費', '說的話房間開封']任務六:獲取文字等於水電費的標籤,取出他們的class

print(html.xpath('.//div[text()="水電費"]/@class'))
結果:['three', 'three']

html_str = """

都市德瑪西亞

王牌對王牌

特殊位置

水電費說的話房間不開封

三頓飯黑客技術

水電費說的話房間開封

"""from lxml import etree

html = etree.html(html_str)

print(html.xpath('.//div[@class="one"]/text()'))

print(html.xpath('.//div[@id="first"]/div/text()'))

print(html.xpath('.//div[@id="first"]//div/text()'))

print(html.xpath('.//div[@id="second"]/div[@class="three"]/text()'))

print(html.xpath('.//div[@class="three"]/text()'))

print(html.xpath('.//div[text()="水電費"]/@class'))

ID和CLASS的區別

在編寫外部css過程中,經常會會用到id與class屬性,即使用點號 建立class選擇器,使用hash符號 建立id選擇器。id是不能重複的,所以在xhtml的結構中,大結構一定是用id。比如標誌 導航 主體內容 版權。id需要具有唯一性,並且盡量在外圍使用。而class具有可重複性,並且盡量在結...

DIV CSS學習 關於ID和CLASS

div css學習 關於id和class 中國網管論壇 在這裡我們有到id和class,那麼有的朋友就要問了,究竟什麼情況下用id,什麼情況下用class呢?id,表示的是唯一性,並且在這個頁面中只會出現一次,我們用它來表示布局的結構 class,表示一組 類 或乙個具有同樣性質的元素,它們可以共用...

CSS中id和class的區別

首先,在表現形式上 id 的優先順序比css高,例如 藍色理想 id和class都定義了背景顏色的屬性,但是由於id的優先順序比class高,所以背景色為id所定義的紅色 再次,class是通用屬性,就是說幾個div可以呼叫同乙個class 而id是唯一的,web標準中不允許出現兩個div的id標識...