先定義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
屬於標籤,它有自己的屬性,例如class
、id
等等。 - 點 . 的作用:表示當前位置;與其對應的是雙點 .. :表示上一層級的位置 - 雙斜槓 // 的作用:查詢當前標籤下所有子級中搜尋;與其對應的是單斜桿 / ,這個標籤標籤下一層所有中搜尋。【後面兩個任務是這點的練習】
任務二:獲取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
下,所有類為three
的div
標籤的文字值
指定id為second,並且子級div的類名是three,然後是獲取文字,則xpath如下
print(html.xpath('.//div[@id="second"]/div[@class="three"]/text()'))
結果:['水電費', '說的話房間不開封']
任務五:獲取所有類為three
的div
標籤的文字值
觀察html**塊,會發現類為three
的div
標籤在幾個地方,所以這裡最好的方法就是全域性範圍內的直接搜尋,簡單粗暴的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標識...