與bs4的區別
bs4有很多屬性和方法,而xpath只有一個方法,是通過不同的xpath表達式實現很多功能的。
html例子
定位
tree.xpath(‘/html/head/title’)
返回列表。
開頭的斜杠表示從根節點遍歷。
中間的斜杠表示層級。(相當于bs4中的>)
如果直接打印:
返回的是一個element對象,其中存儲的title標簽對應的文本內容
tree.xpath(‘/html/body/div’)
分析例子,得知返回應該是三個element
tree.xpath(‘/html//div’)
兩個杠,代表跨層。(相當于bs4中的空格)
輸出與 tree.xpath(‘/html/body/div’) 相同
tree.xpath(‘//div’)
含義是定位全部div (理解:就是從任意位置開始定位)
tree.xpath(‘//div[@class=“song”]’)
屬性定位。
返回的仍是列表。
想定位下面這個div,發現它有一個屬性 class=song
tree.xpath(‘//div[@class=“song”]/p[3]’)
索引定位。
返回仍是列表。
如果定位蘇軾那一行,就是在div的第三個p標簽。
注意:索引從1開始,而不是0開始。
取文本
tree.xpath(‘//div[@class=“tang”]/ul/li[5]/a/text()’)
返回列表。
tree.xpath(‘//div[@class=“tang”]/ul/li[5]/a/text()’) [0]就是只有杜牧兩個字了。
tree.xpath(‘//li[7]/i/text()’) [0]
如果要定位度蜜月,那么發現它是全文中第七個li標簽。
/text()獲取標簽直系文本內容
tree.xpath(‘//li[7]//text()’) [0]
等價于上面。
//text()獲取標簽所有文本內容
取屬性
tree.xpath(‘//div[@class=“song”]/img/@src’)