XPath 简介:网页爬虫的基础

XPath是一种用于指定访问XML文档特定元素或属性的路径的语言。我们将了解XPath的基本语法和HTML代码。

11
XPath 简介:网页爬虫的基础

0. XPath是什么?

XPath是“XML路径语言”的缩写,用于指定访问XML文档特定元素或属性的路径的语言。

XPath通常用于网络爬虫任务,首先让我们了解XPath的基本语法。

1. Xpath的基本语法

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>hashscraper</title>
</head>
<body>
    <div id="container">
        <div class="title">
            <p class="content1">let's start crawling!</p>
            <p class="content2">crawling is fun!</p>
        </div>
    </div>
</body>
</html>

2. HTML代码

以下是简单的HTML代码。

HTML代码由元素(element)和属性(attribute)组成,每个元素和属性都形成层次关系。

XPath将XML文档表示为树结构,从顶级节点到最底层节点,显示可以提取所有节点、属性和数据的路径。

(*在这里,“节点”指的是XML文档的各个部分,如元素、属性、文本内容等。)

让我们尝试获取访问标题元素的路径。

在树结构中,标题元素的顺序为html元素 → head元素 → 标题元素。

因此,标题元素的XPath如下所示。

/html/head/title

此外,XPath使用“@”表示与元素相关联的属性,使用@来表示在上述代码中第一个p元素的XPath如下所示。

/html/body/div/div/p[@class='content1']

3. Xpath的两种表示方法

XPath可以以两种方式表示,绝对路径相对路径

3.1. Xpath:绝对路径

绝对路径与上述使用的方式相同,从最顶层的根节点开始选择元素的方式。

html/body/div/div/p[@class='content1']

3.2. Xpath:相对路径

相对路径使用“//”跳过中间节点路径,并从指定节点开始按顺序搜索。将上述绝对路径表示为相对路径如下。

//p[@class='content1']

4. 其他表达语法

除了这些,XPath还使用各种语法来表示路径。

4.1. 包含

:获取包含该值的情况。

#'aa'를 포함하는 class명을 가진 div 요소를 선택
//div[contains(@class, "aa")]

4.2. 最后

:获取与路径匹配的节点中的最后一个节点。

//div[@class="aa")/span[last()]

4.3. 并且

:获取同时满足两个条件的节点。

#class명에 'aa'와 'bb'를 포함하는 img 요소를 선택
//img[contains(@class, "aa") and contains(@class, "bb")]

4.4. 或

:获取满足两个条件中的一个或多个条件的节点。

#class명에 'aa' 또는 'bb'를 포함하는 img 요소를 선택
//img[contains(@class, "aa") or contains(@class, "bb")]

4.5. 非

:获取不满足该条件的节点。

#class명에 'aa'를 포함하고 'bb'를 포함하지 않는 img 요소를 선택
//img[contains(@class, "aa") and not(contains(@class, "bb")

5. 示例实践

到目前为止,我们已经了解了XPath的基本语法。现在让我们尝试从网站中获取我想要的XPath。

5.1. 打开开发者工具

notion image

首先打开所需的网站,然后单击鼠标左键并按“检查”按钮,您将看到Chrome开发者工具已打开。

5.2. 确认所需标签

notion image

在开发者工具中,单击左上角的鼠标图标。然后将鼠标悬停在要提取的网站部分上方,将显示如下内容。

notion image

单击鼠标指向的位置,开发者工具将显示实际的html代码中我想要的部分标签。

notion image

5.3. 复制XPath

notion image

复制所需部分,然后粘贴复制的内容,您将获得所需部分的XPath!

您可以确认已成功移动到所需部分的XPath。

//*[@id="home"]/div/div/div[1]/h1

那么,获取的XPath如何用于网络爬虫?以下是爬虫代码的一部分。

get_browser.goto "<https://www.hashscraper.com>"
x = get_browser.element(xpath: "//*[@id='home']/div/div/div[1]/h1").text

5.4. 确认操作

通过使用XPath获取所需元素并将其存储在x中,然后打印x,您将看到所需文本的输出。

6. 结论:要进行正确的网络爬虫,首先学习XPath

到目前为止,我们已经了解了网络爬虫的基础知识,XPath。为了收集所需数据,您需要了解数据可能通过哪些路径表示,而XPath可以简单地表示这一点。我们建议您从学习XPath开始,然后开始网络爬虫!

也一起阅读:

数据收集,现在自动化

开始无需编码,5分钟即可开始 · 5000多个网站爬取经验

免费开始 →

Comments

Add Comment

Your email won't be published and will only be used for reply notifications.

继续阅读

Get notified of new posts

We'll email you when 해시스크래퍼 기술 블로그 publishes new content.

Your email will only be used for new post notifications.