Xpath语法
article:选取所有article元素的子节点
/article:选取根元素article
article/a:选取所有属于article的子元素的a元素
//div:选取所有div元素(不论出现在文档任何地方)
article//div:选取所有属于article元素的后代的div元素,不管他出现在article之下的任何位置
//@class:选取所有名为class的属性
/article/div[1]:选取属于article子元素的第一个div元素
/artlcle/div[last()]:选取属于article子元素的最后一个div元素
/article/div[last()-1]:选取属于article元素的倒数第二个div元素
//div[@lang]:选取所有拥有lang属性的div元素
//div[@lang='eng']:选取所有lang属性为eng的div元素
/div/*:选取属于div元素的所有子节点
//*:选取所有元素
//div[@*]:选取所有带属性的title元素
/div/a|//div/p:选取所有div元素的a和p元素
//span|//url:选取文档中的span和url元素
article/div/p|//span:选取所有属于article元素的div元素的p元素以及文档中所有的span元素
常见的语法规则就这么多,下面以伯乐在线的一片文章爬取来介绍xpath的实际应用。
例如在一篇文章中http://blog.jobbole.com/113549/
中抓取文章标题“三款简单而优秀的Linux网络监视工具”
常见的两者提取方式如下图
re_selector1是根据id的唯一性来定位,用id定位是最准确高效的;re_selector是根据class来定位,要注意检查该class是不是全局唯一。正如上图后面所示,我们成功的获得了标题。