Beautiful Soup解析文档特定部分

Beautiful Soup解析文档特定部分

Beautiful Soup解析文档特定部分

  BeautifulSoup 是一个 Python 模块,用于从抓取的网站中查找特定的网站内容/标签,这些内容/标签可以被任何模块(如 requests 或 scrapy)抓取。请记住,BeautifulSoup 不会抓取网站,而是以可读的形式处理和显示其他模块抓取的内容。因此,要了解我们如何抓取网站上的数据,我们将通过示例来理解。

Beautiful Soup解析文档特定部分

  在多种情况下,您希望使用 Beautifulsoup4 提取特定类型的信息(仅标签)。Beautifulsoup 中的 SoupStrainer 类允许您仅解析传入文档的特定部分。一种方法是创建一个 SoupStrainer 并将其作为 parse_only 参数传递给 Beautifulsoup4 构造函数。本文晓得博客为你介绍Beautiful Soup解析文档特定部分。

需要的安装的模块

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

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

  让我们从抓取示例网站开始,看看如何只抓取页面的一部分。

SoupStrainer

  创建一个 SoupStrainer 并将其作为 parse_only 参数传递给 Beautifulsoup4 构造函数。

  SoupStrainer 告诉 BeautifulSoup 提取了哪些部分,解析树只包含这些元素。如果您将所需信息缩小到 HTML 的特定部分,这将加快您的搜索结果。

product = SoupStrainer('div',{'id': 'products_list'})
soup = BeautifulSoup(html,parse_only=product)

  上面的代码行将仅解析来自产品站点的标题,这些标题可能位于标签字段内。

  类似地,像上面一样,我们可以使用其他 soupStrainer 对象来解析来自 HTML 标签的特定信息。以下是提取 百度热搜 的标题示例 –

from bs4 import BeautifulSoup,SoupStrainer
import requests


URL = "https://www.baidu.com/"

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, "lxml",
					parse_only = SoupStrainer(
					'span', class_= 'title-content-title'))

print(soup.prettify())
  • 导入beautifulsoup模块和请求。声明了Header并添加了一个用户代理。
  • 使用SoupStrainer来过滤掉我们需要的网站部分,根据需求删选
  • SoupStrainer类告诉我们提取哪一部分,只需要将 SoupStrainer 对象作为parse_only参数传递给 BeautifulSoup 构造函数

  结果如图显示:

使用SoupStrainer提取特定部分

总结

  以上是晓得博客为你介绍的Beautiful Soup解析文档特定部分的全部内容,如有问题,欢迎留言讨论。

  推荐:Beautiful Soup 使用教程

给文章评分

ThemeForest 模板套件
可视化创建WordPress网站

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注


Scroll to Top