XPath是一种使用路径表达式在XML文档(或我们的HTML文档)中选择节点或节点集的技术。虽然XPath本身不是编程语言,它也允许您编写可以直接访问特定HTML元素的表达式,而无需遍历整个HTML结构。
为什么要学习XPath
从网页中提取数据时,必须了解如何使用基本XPath表达式。
比CSS选择器更强大
它允许您以任何方向浏览DOM
可以匹配HTML元素内的文本
文档对象模型(Document Object Model)
我假设您已经了解HTML,网页是一个包含标签内文本的文档,通过描述诸如标题,段落,列表,链接等元素,为文档增加含义。
让我们看一个基本的HTML页面,以了解什么是文档对象模型。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>What is the DOM ?</title>
</head>
<body>
<h1>DOM 101</h1>
<p>Websraping is awsome !</p>
<p>Here is my <a href="https://www.scrapingbee.com/blog">blog</a></p>
</body>
</html>
rmqhgyrbwdbczfcg_hu1e1d337a3bce3f5e7a7bdc84d1b0b64f_43119_800x0_resize_box_2.png
该HTML代码基本上是封装在其他HTML内容内的HTML内容。HTML层次结构可以视为树。我们已经可以通过HTML代码中的缩进看到该层次结构。
当您的Web浏览器解析此代码时,它将创建一棵树状结构,该树是HTML文档的对象表示。它称为文档对象模型。
要记住的重要一点是,当您右键单击+ inspect时,在浏览器中看到的DOM可能与发送的实际HTML确实不同。也许执行了一些Javascript代码并动态更改了DOM!例如,当您滚动Twitter帐户时,浏览器会发送一个请求以获取新的tweet,并且一些Javascript代码将这些新的tweet动态添加到DOM。
xPath语法
• 在Xpath术语中,与HTML一样,存在不同类型的节点:根节点,元素节点,属性节点以及所谓的原子值,这是HTML文档中文本节点的同义词。
• 每个元素节点都有一个父节点。在此示例中,section元素是p,details和button的父元素。
• 元素节点可以具有任意数量的子节点。在我们的示例中,li元素是ul元素的所有子元素。
• 兄弟姐妹是具有相同父代的节点。p,详细信息和按钮是同级。
• 祖先节点的父级和父级的父级...
• 后代节点的子代和子代的子代…
在HTML文档中有多种类型的表达式来选择节点,以下是最重要的表达式:
网友评论