如何在 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.