find_all()函数和BeautifulSoup包的SoupStrainer有什么区别?

时间:2017-11-10 00:25:16

标签: python-3.x beautifulsoup

以下代码用于在屏幕上打印html_doc的标签,这是一个包含html代码的变量:

from bs4 import SoupStrainer

only_a_tags = SoupStrainer("a")

print(BeautifulSoup(html_doc, "html.parser", parse_only=only_a_tags).prettify())

以下代码返回相同的结果:

print(BeautifulSoup(html_doc, "html.parser").find_all("a").prettify())

使用SoupStrainer和find_all()函数有什么区别?

我们可以同时使用SoupStrainer和Find_all()吗?

我发现以下内容但无法理解它的作用:

BeautifulSoup(response,parse_only=SoupStrainer("a",href=True)).find_all("a")

1 个答案:

答案 0 :(得分:0)

find_all返回一个可迭代的可导航字符串,SoupStrainer解析页面以限制你的某些参数。

迭代页面中的每个锚点,对每个使用find_all的锚点执行一些操作。如果你只想从页面解析除了锚点之外的所有内容你都会使用SoupStrainer。一起使用它们只会使它更有效率。