📜  如何在 BeautifulSoup 中使用 Xpath?

📅  最后修改于: 2022-05-13 01:54:51.718000             🧑  作者: Mango

如何在 BeautifulSoup 中使用 Xpath?

先决条件: Beautifulsoup

在本文中,我们将看到如何将 Xpath 与 BeautifulSoup 结合使用。使用 lxml 从网页上的元素获取数据需要使用 Xpaths。 XPath 的工作方式与传统文件系统非常相似

需要的模块和安装:

首先,我们需要在我们的计算机上安装所有这些模块。

  • BeautifulSoup:我们的主要模块包含一个通过 HTTP 访问网页的方法。
pip install bs4
  • lxml:用Python语言处理网页的助手库。
pip install lxml
  • 请求:使发送 HTTP 请求的过程完美无缺。函数的输出
pip install requests

使用lxml从网页上的元素获取数据需要使用Xpaths

使用 XPath

XPath 的工作方式与传统文件系统非常相似。



要访问文件 1,

C:/File1

同样,要访问文件 2,

C:/Documents/User1/File2

要查找页面上特定元素的 XPath:

  • 右键单击页面中的元素,然后单击检查。
  • 右键单击“元素”选项卡中的元素
  • 单击复制XPath

方法

  • 导入模块
  • 从网页中抓取内容
  • 现在要使用Xpath,我们需要将soup 对象转换为etree 对象,因为BeautifulSoup 默认不支持使用XPath。
  • 但是,lxml 支持 XPath 1.0。它有一个 BeautifulSoup 兼容模式,它会像 Soup 一样尝试解析损坏的 HTML。
  • 要复制元素的 XPath,我们需要检查该元素,然后右键单击它的 HTML 并找到 XPath。
  • 在此之后,您可以使用 lxml 模块的 etree 类中可用的 .xpath 方法来解析相关元素内的值。

注意:如果 XPath 没有给您想要的结果,请复制完整的 XPath 而不是 XPath,其余的其他步骤将相同。

下面给出的示例展示了如何将 Xpath 与 Beautifulsoup 一起使用

程序:

Python3
from bs4 import BeautifulSoup
from lxml import etree
import requests
  
  
URL = "https://en.wikipedia.org/wiki/Nike,_Inc."
  
HEADERS = ({'User-Agent':
            'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 \
            (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36',\
            'Accept-Language': 'en-US, en;q=0.5'})
  
webpage = requests.get(URL, headers=HEADERS)
soup = BeautifulSoup(webpage.content, "html.parser")
dom = etree.HTML(str(soup))
print(dom.xpath('//*[@id="firstHeading"]')[0].text)


输出:

Nike, Inc.