嗨,我代班仔啦
前幾天我們在selenium有講到幾個指令像是find_element_by的指令,
但如果我們的html沒有class或是id等節點的話,其實對我們爬蟲有點不太友善,
所以今天我們會教xpath的搜尋方法
本文有整理在部落格裡。
裡面還有其他奇怪的文章,有空可以來看看喔。
XML Path簡稱XPath,是一種可以用來確定一個東西在XML/HTML檔案中的位置的語言/工具
可以將一個HTML看成是一棵樹,或是更生活化一點,利用樹狀結構的目錄資料夾
像是檔案開頭的<html>
包含了整個文件,而這個節點就是整個html的根節點
或者是如<head>
或是<body>
在html下一層,而這兩個節點就是html的子節點,
相反地,<html>
也是<head>
或是<body>
的父節點
此外,<html>
與<head>
相互是兄弟節點
樹中有許多的節點代表不同元素,而我們就可以使用XPath去查詢這些節點
在XPath中,我們有兩種方式去表現一個節點的位置
利用上面絕對路徑或是相對路徑的方法,直接塞進function就好了,如:
node = chrome.find_element_by_path('/html[1]/body[1]/div[3]/div[1]/div[1]/div[1]/div[2]/div[3]/div[1]/h2[1]')
常常在html中會看到在同個檔案不同個子樹下有相同的節點命名,當使用xpath的相對路徑時可能會有問題
這個時候可以透過index索引去找是哪一個節點,如:
node = chrome.find_element_by_path('//p[0]')
或是利用attribute屬性去標註說我們現在要的是哪一個,如:
<p class='title'>I'm title</p>
node = chrome.find_element_by_path("//p[@class='title']")
還有一些神奇的指令像是contains(),可以找出包含字串的節點,如:
node = chrome.find_element_by_path("//p[contains(text(), 'title')]")
這篇就到這邊結束!