Beautiful Soup - 仅解析文档的一部分

在多种情况下,您希望使用 Beautifulsoup4 提取特定类型的信息(仅限 <a> 标签)。 Beautifulsoup 中的 SoupStrainer 类允许您仅解析传入文档的特定部分。

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


SoupStrainer

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

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

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

类似地,像上面一样,我们可以使用其他 soupStrainer 对象,从 HTML 标签中解析特定信息。 下面是一些例子 −

from bs4 import BeautifulSoup, SoupStrainer

#Only "a" tags
only_a_tags = SoupStrainer("a")

#Will parse only the below mentioned "ids".
parse_only = SoupStrainer(id=["first", "third", "my_unique_id"])
soup = BeautifulSoup(my_document, "html.parser", parse_only=parse_only)

#parse only where string length is less than 10
def is_short_string(string):
   return len(string) < 10
   
only_short_strings =SoupStrainer(string=is_short_string)