2017-04-02 41 views
2

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

+0

http://stackoverflow.com/questions/17436014/selenium-versus-beautifulsoup-for-web-scraping?rq=1 我已阅读这篇文章,就是我现在爬行都是动态的网站,所以我必须使用Selenium而不是urllib2 – jackycflau

回答

4

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

为了提高HTML解析部分的表现,它通常是更快,让BeautifulSouplxml解析来自.page_source检索到的页面的源代码。


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

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

谢谢!明确的答案:) – jackycflau

+1

非常高质量的职位,谢谢你的贡献alecxe。 Selenium可以与无头浏览器一起使用(我相信你知道) 加速进程并降低内存使用量(通常),不知道命令如何到达浏览器> JSON,谢谢你。 –

相关问题