都是基于js语法规则的无头浏览器,casperJs是对phantomjs的一次封装。即phantomjs是原生的,而casperjs是封装在以phantomjs基础上的玩意。
这玩意的作用,就是完成模拟浏览器行为,模拟真实用户点击浏览器浏览网页的行为。然后可以通过编写代码,来控制casperjs来定向实现自己所需要的功能,比如常见的抓取某个网站的内容,就是常见需求--就是所谓的网络爬虫!其次也可以做一些常用每天的签到功能,估计刷火车票也可以(在之前没有验证码的时候)。反正这玩意的作用,就是相当于一个浏览器,通过代码控制这玩意,就是完成模拟真实的人浏览网页的过程。当然,其中会涉及到必须要手动的解决随机码,比如验证码之类的问题,那就比较操蛋。如果是简单的数字验证,还可以通过抓取验证码的数字进行自动验证。不过像12306这种BT到没有朋友的网站,其验证码规则以及验证办法,估计是通过图片每次生成的唯一串随机码来区别的,估计破解不了图片转成他们变态格式的验证串,是没有办法破解的。扯远了,继续回归casperjs这玩意。
casperjs就是模拟一个用户通过浏览器正常浏览网页的过程,就跟把大象放到冰箱一样简单。(三步走,打开冰箱,放进大象,关上冰箱)。用户浏览网页,第一步,打开浏览器,casperjs就是通过,start()来初始化一个浏览器出来,在start的时候,可以配置相对应的各种参数。(超时时间,遇到错误处理方式、是否加载页面的图片、插件、样式信息、记录日志级别等等)
打开浏览器,然后浏览器有各种类别,谷歌,火狐,ie,于是乎可以通过useragent()来指定casperjs生成的浏览器的类型,(通过这种伪造UA头的方式,可以定向欺骗某些根据UA进行访问限制的网站)
其次就是正常打开你浏览的网页的url地址,在casperjs里面,就是通过thenopen(url)来实现,open就是打开你要浏览的网页地址。
接着就是浏览页面打开你要观看的信息了和具体的页面操作点击签到,或者点击页面的二次链接地址,这里就可以通过js的闭包函数来实现,就是js规则,dom操作,getEmlemtBy(),点击二次链接可以继续open()~然后可以得到你要的信息。
最后是完成操作后,关闭浏览器。casperjs即用exit退出此次模拟行为。要将上面所有定义的过程步骤跑起来,casperjs用run命令,将步骤一步步跑起来。完成一次用户浏览网页的过程。
上面就是casperjs的主体流程,具体细节到里面的内容,得具体看文档。比如最简单的提升打开页面的等待时间在初始化浏览器时候,配置好减少加载不必要的项目,设置waitfor行为(等待页面打开后再进行下一步操作)等等~页面发生未知错误,退出还是捕捉做其他处理~这些都是精确到细节的东西,需要多看文档寻求解决方案。
早之前做的一个抓取项目,就通过看文档,设置loadimage,loadplugin的选项为false,提升将近一倍的速度。具体的细节的东西,还是要多死抠文档。