xpath定位方法
一. 常用定位方法
1.根据文本值定位元素
查找文本值为DNS的div元素
text1 = html.xpath("//div[text()='DNS']")
text2 = html.xpath("//div[text()='DNS']/text()") #获取这个div对象的文本值
2.不选择某个子节点
#选取位置小于3的li节点,也就是1和2的节点
result = html.xpath('//li[position()<3]/a/text()')
#选取不含 class 属性的所有 p 节点
result = html.xpath('//p[not(@class)]')
3.寻址兄弟节点
preceding-sibling:向上查找
following-sibling:向下查找
//*[@class='demo']/following-sibling::div[1] --》向下查找第一个兄弟节点
//*[@class='demo']/preceding-sibling::div[1] --》向上查找第一个兄弟节点
二. 例子
# https://whois.chinaz.com/inhandnetworks.uk中获取DNS信息
texts = html.xpath("//div[text()='DNS']/parent::li/div[not(@class='fl WhLeList-left')]/span/text()")
1. 先获取文本值为DNS的div元素
2. 获取包含DNS框的父元素<li>
3. 找到不是DNS标题的<div>子元素
4. 找到dns值的子节点<span>的文本值,此时获得的是一个列表。
获得创建时间值
crtime = html.xpath("//div[text()='创建时间']/following-sibling::div[1]/span/text()")
参考:
努力生活,融于自然