我们常常用Selenium来抓取数据,因为可以驱动浏览器,这样节省了我们很多的时间,但其实Selnium的主要功能其实不是用来写爬虫的,所以这篇还是先来介绍下Selenium。
Selenium是什么
Selenium 是一个开源测试框架,用来对web应用(比如网站)做自动化测试用的,因为它可以驱动浏览器,诸如Chrome,Firefox,IE等,所以可以较为真实的模拟人自动去点击网站的各个按钮,翻页,填写表单等,这样节省了很多测试时间。
它是多语言的,不只是Python,还支持Java,C#,Ruby等等。
被应用于解决爬虫技术问题,是一个巧合,一个完美巧合。
Selenium为爬虫解决什么问题
写爬虫比较繁琐的几个地方:
一是登陆,二是异步加载,三是JS内容混淆。
因为Selenium是直接运行在浏览器上,它会自动根据你的程序设定去操作浏览器,所以它能自动把账号填入到登陆框里,自动点击登陆按钮,完成登陆,不需要你千辛万苦的去研究登陆加密过程。
像有些网站,当你的鼠标向下拖动时,下面的内容才会加载出来,你可以让Selenium自动让鼠标向下拖动,让它加载内容,不用再去分析Ajax。
JS内容混淆是比较头痛的,有些网站的html源代码文字内容可能是一大串你看不懂的乱码,在浏览器里能正确显示,你抓出来的html是乱码,这就可能是网站通过JS把内容混淆了,如果你有了Selenium几不用愁这个问题。
Selenium能干什么事情呢?总结一句就是:
你人用浏览器能干什么,Selenium基本就能干什么。
Selenium的缺点
上面把Selenium吹的神了,那它的缺点是什么呢?
主要是慢,用它来抓数据是真慢,加载的时候慢,打开页面时也慢,等它把页面资源加载完了,要好几秒,抓一个页面估计要10秒左右。
所以你对抓取效率要求高的话,就要想别的办法。
但这也带来了一个好处,就是这样是完全模拟人的行为,所以对方网站不易发现你是爬虫。
另一个缺点就是不太稳定,从老猿的使用情况来看,长时间运行会异常退出,所以要处理好容错。
也有可能是driver版本不对应的问题引起,它的版本对应让我也有点头晕。
领取专属 10元无门槛券
私享最新 技术干货