Xpath表達式
/
代表從頂端開始尋找标簽一層層尋找
例子:/html/head/title
text()
提取文本資訊
例子:/html/head/titile/text()
@[]
提取屬性
例子://li[@class=””]/a/@href 标簽[@屬性=值]
//
尋找所有标簽
例子://li
/ /*
例子/div/* 選取屬于div元素的所有子節點
//*
例子//* 選取所有元素
//div[@*]
選取所有帶屬性的title元素
/div/a|//div/p
選取所有div元素的a和p元素
//span|//ul
選取文檔中的span和ul元素
Article/div/p|//span
選取所有屬于article元素的div元素的p元素以及文檔中所有的span元素
Contains()
當有多個class屬性時使用contains函數擷取
例子//span[contains(@class,’vote-post-up’)]
Re
re.compile(".*?(\d{4}[年/-]\d{1,2}([月/-]$|[月/-]\d{1,2}|[月/-]\d{1,2}日|$))").findall(str(data))
日期
[\u4E00-\u9FA5]+
中文
starts-with
比對一個屬性開始位置的關鍵字
Contains
driver.findElement(By.xpath(“//a[contains(text(), ’退出’)]));
比對一個屬性值中包含的字元串
text()
比對的是顯示文本資訊,此處也可以用來做定位用
擷取目前标簽下的所有文字包括子标簽
test= comment.xpath(".//span[@class='ctt']")
result = test[0].xpath('string(.)').strip()
following-sibling::td[1] 選擇兄弟節點
//選擇不包含class屬性的節點
var result = node.SelectNodes(".//span[not(@class)]");
//選擇不包含class和id屬性的節點
var result = node.SelectNodes(".//span[not(@class) and not(@id)]");
//選擇不包含class="expire"的span
var result = node.SelectNodes(".//span[not(contains(@class,'expire'))]");
//選擇包含class="expire"的span
var result = node.SelectNodes(".//span[contains(@class,'expire')]");
//解析出帶标簽的目前元素
etree.tostring()
<div>
<a id="1" href="www.baidu.com">我是第1個a标簽</a>
<p>我是p标簽</p>
<a id="2" href="www.baidu.com">我是第2個a标簽</a>
<a id="3" href="www.baidu.com">我是第3個a标簽</a>
<a id="4" href="www.baidu.com">我是第4個a标簽</a>
<p>我是p标簽</p>
<a id="5" href="www.baidu.com">我是第5個a标簽</a>
</div>
擷取第三個a标簽的下一個a标簽:"//a[@id='3']/following-sibling::a[1]"
擷取第三個a标簽後面的第N個标簽:"//a[@id='3']/following-sibling::*[N]"
擷取第三個a标簽的上一個a标簽:"//a[@id='3']/preceding-sibling::a[1]"
擷取第三個a标簽的前面的第N個标簽:"//a[@id='3']/preceding-sibling::*[N]"
擷取第三個a标簽的父标簽:"//a[@id=='3']/.."
判斷是否包含文字 root.xpath("//div[@id='sublist_div']/span[contains(text(),'簡') and contains(text(),'日')]/text()")