我目前使用Selenium从一些网站抓取数据。与urllib不同,似乎我并不需要像BeautifulSoup这样的解析器来解析HTML。我可以简单地用Selenium找到一个元素,并使用Webelement.text来获取我需要的数据。正如我看到的,有些人在网络爬行中一起使用Selenium和BeautifulSoup。它真的有必要吗? bs4可以提供哪些特殊功能来改进抓取过程?谢谢。如果我们使用Selenium,我们是否还需要像BeautifulSoup这样的解析器?
2
A
回答
4
Selenium本身在定位元素方面非常强大,它基本上包含了从HTML中提取数据所需的一切。问题是,它很慢。每一个硒命令都要经过JSON wire HTTP protocol,而且有很大的开销。
为了提高HTML解析部分的表现,它通常是更快,让BeautifulSoup
或lxml
解析来自.page_source
检索到的页面的源代码。
换句话说,对于动态网页常见的工作流程是这样的:
- 由硒
- 控制的浏览器打开网页进行必要的浏览器操作
- 一次所需数据在页面上,获取
driver.page_source
并关闭浏览器 - 将页面源传递给HTML解析器以供进一步解析
+0
谢谢!明确的答案:) – jackycflau
+1
非常高质量的职位,谢谢你的贡献alecxe。 Selenium可以与无头浏览器一起使用(我相信你知道) 加速进程并降低内存使用量(通常),不知道命令如何到达浏览器> JSON,谢谢你。 –
相关问题
- 1. 如果我使用Firebase,是否还需要像RoR或Django这样的后端?
- 2. 如果我们使用ForkJoinPool框架的Recursiveaction,我们是否需要调用join()?
- 3. 如果我们需要支持多个平台,我们是否需要restclient
- 4. 我们是否需要解决ConcurrentModificationException?
- 5. 如果我们在docker上使用wordpress,我们是否需要安装apache&PHP?
- 6. 我们是否需要ezpublish_legacy?
- 7. 当我们使用xchg时,我们是否需要防护
- 8. 为什么我们需要像Nuget这样的包管理器?
- 9. 我们是否需要分区器?
- 10. 我们是否还需要迭代器设计模式?
- 11. 如果Heroku每天运行cron,我们是否还需要'如果time.now.hour ...`?
- 12. 我们需要像tomcat这样的“本地服务器”来使用phpmyadmin吗?
- 13. 如果我们需要在Rails中使用自定义ID,我们应该使用FriendlyID还是主键?
- 14. 如果我们正在同步读取,我们是否需要同步写入?
- 15. 我们需要使用99S像
- 16. 如果我们使用EPPlus库,我们是否需要在服务器pc上安装Microsoft Office?
- 17. 我们还需要Richter的AsyncEnumerator吗?
- 18. 我们为什么要使用`realloc`如果我们需要一个'TMP buffer`
- 19. 我们是否需要在ArrayList上使用迭代器?
- 20. 如何使这个查询产生我们需要的结果?
- 21. 我们是否需要更新Orbeon?
- 22. 我们是否需要取消按钮?
- 23. 我们是否需要更改标题?
- 24. 我们是否需要关闭file_get_contents?
- 25. 我们是否需要在UIScrollView iOS 6+
- 26. 我们是否还需要“放置新”和“新操作员”?
- 27. 我们是否需要关闭资源解析器和会话两者?
- 28. CSS3:我们还需要使用浏览器前缀吗?
- 29. 我们是否需要Microsoft.Web.MVC,我使用ASP.NET MVC 2.0?
- 30. 我是否还需要用getopt解析强制性参数(...)
http://stackoverflow.com/questions/17436014/selenium-versus-beautifulsoup-for-web-scraping?rq=1 我已阅读这篇文章,就是我现在爬行都是动态的网站,所以我必须使用Selenium而不是urllib2 – jackycflau