我相信很多朋友都听说过Xpath,边肖之前也写过一篇关于Xpath的文章。有兴趣的朋友可以戳这篇文章,总结一下如何使用Xpath抓取JD.COM Web的产品信息,以及Python Web爬虫的四个选择器(正则表达式、BS4、Xpath、CSS)。今天,边肖继续为您介绍一些Xpath知识点,希望对您的学习有所帮助。
1.Xpath允许我们使用类似于Windows下的文件路径的方式,这允许我们定位HTML或XML结构中的特定元素。Xpath本身包含了一些准函数库,可以让我们的Xpath语法更加强大。
2.在HTML结构中,有一定的层次关系。主要关系包括:父节点、子节点、兄弟节点、祖先节点和后代节点。
一般,喜欢类似于
3.理解了这些节点之间的关系之后,我们就可以更好地理解Xpath语法了。下表显示了一些常用的Xpath语法。
表示
详细注释
//@类
选择所有名为class的属性。
/文章
选择根元素文章
//div
选择所有div子元素
文章
选择所有文章元素的所有子节点。
文章/a
选择属于article子元素的所有A元素。
文章//div
选择作为article元素后代的所有div元素。
这里特别强调“/”和“//”的区别。“/”一般表示一个元素的子节点,但不是所有的后代节点;虽然“//”通常表示元素的后代节点,但其范围比“/”所表示的要广。@符号后面经常跟class,这意味着选择一个名为class attribute的节点,这很常见。
4.下面具体的网页源代码我们来看看网页的结构。
上图红框中,class是属性,等号后面的“grid-5”是属性值。有时一个节点中有多个属性。例如,在上图的196行中,有两个属性。
5.为了更方便地定位div或其他节点下的标签,我们需要继续进一步定位并锁定它们。下表显示了一些常用的Xpath语法。
表示
详细注释
//div[@lang]
选择所有具有lang属性的div元素。
//div[@ lang = # 39;eng # 39]
选择所有具有语言属性eng的div元素。
/article/div[1]
选择属于article子元素的第一个div元素。
/article/div[last()]
选择最后一个div元素,它是article的子元素。
/div/*
选择属于div元素的所有子节点。
选择所有元素
//div/a | //div/p
选择所有div元素的a和p元素。
掌握了Xpath语法的知识后,我们就可以通过Xpath语法编写Xpath表达式来提取网页上的目标数据。
千里之行始于足下。想要学好Xpath,需要经常使用。