如果我们可以使用 Selenium,为什么我们还需要像 BeautifulSoup 这样的解析器?

Why do we still need parser like BeautifulSoup if we can use Selenium?

我目前正在使用 Selenium 从一些网站上抓取数据。与 urllib 不同,我似乎并不需要像 BeautifulSoup 这样的解析器来解析 HTML。我可以简单地用 Selenium 找到一个元素并使用 Webelement.text 来获取我需要的数据。正如我看到的,有些人在网络爬虫中同时使用 Selenium 和 BeautifulSoup。真的有必要吗? bs4 可以提供哪些特殊功能来改进爬行过程?谢谢。

Selenium 本身在定位元素方面非常强大,它基本上拥有从 HTML 中提取数据所需的一切。问题是,它很慢。每个单独的 selenium 命令都经过 JSON wire HTTP protocol 并且存在大量开销。

为了提高HTML解析部分的性能,通常让BeautifulSouplxml解析从.page_source获取的页面源会快很多.


换句话说,动态网页的常见工作流程是这样的:

  • 在selenium控制的浏览器中打开页面
  • 进行必要的浏览器操作
  • 一旦所需数据出现在页面上,获取 driver.page_source 并关闭浏览器
  • 将页面源传递给 HTML 解析器进行进一步解析