Beautiful Soup解析文档特定部分
BeautifulSoup 是一个 Python 模块,用于从抓取的网站中查找特定的网站内容/标签,这些内容/标签可以被任何模块(如 requests 或 scrapy)抓取。请记住,BeautifulSoup 不会抓取网站,而是以可读的形式处理和显示其他模块抓取的内容。因此,要了解我们如何抓取网站上的数据,我们将通过示例来理解。
在多种情况下,您希望使用 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 构造函数
结果如图显示:
总结
以上是晓得博客为你介绍的Beautiful Soup解析文档特定部分的全部内容,如有问题,欢迎留言讨论。
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折