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

时间:2017-04-02 03:43:32

标签: python selenium beautifulsoup web-crawler urllib2

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

1 个答案:

答案 0 :(得分:6)

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

为了提高HTML解析部分的性能,让BeautifulSouplxml解析从.page_source检索到的页面源通常要快得多。

换句话说,动态网页的常见工作流程如下:

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