前言
我是从今年二月底才开始接触到爬虫的——此前,我对此一无所知,连header,request都不知道,对于html更是一窍不通。我并不是一个程序员,我非计算机类专业出身,学的是传统工科,本科时对编程也毫无兴趣,唯一的编程方向的启蒙说大一必修的公共课C++。总之,大学时的我从未想过将从事数据相关职业,可以说造化弄人了。作为一个大龄半自学不成材的新人数据产品经理,在工作后的三个月里,学到了很多,更意识到不懂的更多,学海茫茫,不要心慌,不要气馁,好好游吧。
我觉得将这段时间的心得体会,遇到的问题,解决的问题,没能解决的问题都记录下来。我的程度决定了我的想法和代码都比较稚嫩,也许只能给像我一样的新手一点小小的参考,如有错误还请指正,谢谢啦。
警告⚠: 本文中不会出现太多代码(因为我大部分代码反正也都是抄来抄去改一改的),如果感觉很话痨很无聊,请绕行。
关于环境
我现在用的是python3.6.4,chrome版本是66,对应的chromedriver版本是2.38。 对于两者版本号需要对应,否则chrome driver是没办法正常工作的,这个博客整理了对应关系。chromedriver与chrome的对应关系表,下面还附有chromedriver的下载地址,chromedriver下载。
chromedriver下载之后我是将解压后的.exe复制粘贴在路径: C:\Windows\System32 里。完成这个以后还需要用pip3 安装selenium (pip3这个有很详细的解释,只想稍微说一句:大部分轮子都不需要自己在网上下哇!只需要在cmd 里面,python安装文件夹里,输入pip3 install 想要的文件名 ,程序就自动将对应版本的包连下载带安装都搞好了,我居然最近才知道……)
环境好像可以说的也就这么多,以后遇到具体问题再来补充好了。
Selenium的特点
是一个自动化的测试工具,这个介绍也是网上都有很多了。好处咣咣的,因为它是浏览器!不是模拟,不是假装,就是一个货真价实的浏览器!一切的操作都那么直白,你平时输密码的地方一样输密码(输法略有不同),平时点点点的地方一样点点点,后退刷新关页面,非常符合正常人的使用思路了。而且还有好处呢,相信你也很清楚了,就是对于小白用户(比如我)来说,和想爬的网站之间斗智斗勇的难度都降低了不少,毕竟我们就是个浏览器,只不过是个非常有耐心,可以连着几个小时一直点点点,而且手速略快的浏览器:)网站为了反爬做出的那些努力,比如说什么异步加载啦,渲染啦,测速啦(这些概念我现在还很一知半解)都显得有点无能为力……毕竟再怎么样,数据最终还是要拿给用户看的,拿给用户看就是拿给我看,只要数据能拿到,一切都好办。一般网站对selenium的限制可能就是要求多刷新几次这样吧,毕竟也不能设置规则真的封ip,因为误伤的几率很大啊,真实的客户也很讨厌动不动输验证码,断网,这种不好的体验,所以我们也就被放过咯。
所以看完上面这段的新人你肯定跟我当初一样很激动,哦,但是事物总是好坏相伴。坏事就是,浏览器爬虫的速度和规模,都会有很大限制。我个人觉得,selenium爬虫适合做一些小而美的项目,定向爬取自己感兴趣的,有价值的一部分信息,但是如果想要大而全……就真的请考虑别的办法吧。
比如说,我的老板,上周四给我布置了一个任务,让我把58同城上我们城市的所有租房信息都爬下来存起来……这个,真的是臣妾做不到啊!我的浏览器需要孤独地在后台一个网页一个网页地点开,爬取的速度永远跟不上更新的速度,就算它假设从我爬取时再也不更新,我也需要打开200万个页面,还不时被网站禁止请求……200万,一个天荒地老的,孤独的数字……好了扯远了,遇到这种情况我们该咋办呢?学习分布式爬虫,建立庞大的ip池,更新更好的硬件,做一个集群等等……最重要的是,真诚地看着老板的眼睛说,
“对不起,我不会。”
然鹅我忘记了第一时间甩锅,还好后来好好解释了一下技术的难度,同时真诚表达了我会努力学习的高觉悟,老板同意让我那就先爬一部分吧。
好了根据我以上的真实案例,相信你对selenium的好处和局限性应该又有了一点新的认识。在我看来,selenium是一个非常佛系的爬虫,它可以慢悠悠的每两秒钟开一个网页(我自己设置的为了防反爬),每一个动作都在告诉你:不要着急,不要着急,慢慢来,但是时间可以慢慢展示它真正的力量,告诉你什么叫聚沙成塔,龟兔赛跑,你天长地久地爬下去,总有一天可以看到胜利的曙光……
本次废话到此结束,谢谢观看(咦然而并没有人看)