您现在的位置: 首页 > 网站导航收录 > 百科知识百科知识
写Python爬虫一定要用到chromedriver吗?
浏览器,爬虫,程序写Python爬虫一定要用到chromedriver吗?
发布时间:2019-02-08加入收藏来源:互联网点击:
回答于 2019-09-11 08:43:50
这篇文章主要是从Python编程语言生态系统的角度编写的。我注意到,Selenium已经成为非常流行地用来抓取从网页上的数据,所以chromedriver也是必备的。是的,您可以使用Selenium进行网络抓取,但我觉得这不是一个好主意。
我个人也认为,教导如何使用Selenium进行网页抓取的文章为日常使用工具进行网页抓取提供了一个不好的例子。
1.为什么不应该使用Selenium进行网络抓取
首先,Selenium不是Web抓取工具。它是“用于自动化Web应用程序以进行测试”,该声明来自Selenium主页。其次,在Python中,有一个更好的工具Scrapy开源Web爬网框架。精明的读者会问:“ 与Python相比,使用Scrapy有什么好处?”,您将获得速度和很多速度,开发速度和Web抓取时间的速度,而且代码更干净些。
有一些技巧可以使Selenium Web抓取速度更快,如果使用Scrapy,则不会出现此类问题,而且速度更快。
仅仅因为这些文章的存在证明了(至少对我而言)人们使用了错误的工具进行工作,例如“ 当您唯一的工具是锤子时,一切看起来都像钉子 ”。
2.你什么时候该用Selenium
我个人仅使用Selenium进行网页测试。我会尝试使用它来自动化Web应用程序(如果没有其他选择),但是到目前为止,我还没有这种用例。使用Selenium作为Web抓取工具时,我可以看到的唯一例外是,如果要抓取的网站正在使用JavaScript来获取/显示需要抓取的数据,而且它防爬虫技术很厉害,需要你模仿浏览器去捕获,这时候用Selenium是个明智的选择。
3.用什么代替Selenium来进行网络抓取
如您所料,我的建议是使用Scrapy。我选择Scrapy是因为我花了更少的时间来开发Web抓取程序(Web Spider),并且执行时间很快。我发现由于Scrapy Shell和缓存,Scrapy的开发速度更快。在执行过程中,由于可以同时完成多个请求,因此速度很快,这意味着数据传递将不会按照请求的顺序进行,只是您在调试时不会感到困惑。
4.总结
但存使用Selenium进行Web抓取是不足够的,因为不是生产系统和学习/爱好,这很好。
虽然Selenium很容易启动,您可以在屏幕上实时看到正在隐藏的内容,这对于开始学习/学习网络抓取的人们来说是一个巨大的好处,并且在出现这种情况时要拥有这种早期道德观念很重要。
但是我确实认为所有使用Selenium进行Web抓取的文章和教程都应声明免于现实生活中不使用Selenium(如果您每天需要抓取100K页面,则不可能在单个Selenium实例中做到这一点)。
要开始使用Scrapy很难,您必须编写XPath选择器并查看要调试的HTML页面的源代码并不好玩,但是如果您想快速进行网络抓取,那就是需要花多点时间研究技术,毕竟因地制宜。
回答于 2019-09-11 08:43:50
不用,你说的是用来模拟操作浏览器的。平常爬虫开发的话,基本都是用request库做的。
回答于 2019-09-11 08:43:50
如果网站混淆加密级别不高,完全没必要用Chromedriver(一般称着无头浏览器)来模拟请求。可以分析网站请求逻辑,直接使用http的post或者get来模拟请求。如果涉及到加解密的话,需要去破解js代码逻辑。
回答于 2019-09-11 08:43:50
首先告诉你,不是。
这个驱动是基于selenium库的。使用这个驱动表示可以使用浏览器来进行数据采集。
如果你知道某个资源的具体地址,你也可以直接使用
reques.get
(“...”)直接进行数据的采集。只是使用这个插件可以简化咱们很多的工作量,最初这个插件其实是用来模拟人工进行web测试的。所以告诉你,爬虫不一定用chromedriver驱动
上一篇:游戏中打辅助有哪些千万别做的?
下一篇:返回列表
相关链接 |
||
网友回复(共有 0 条回复) |