plantomjs&casperjs

Casperjs

1.设置编码
phantom.outputEncoding =  "gbk" ;

2.页面操作
querySelector只返回匹配的第一个元素,如果没有匹配项,返回null。
querySelectorAll返回匹配的元素集合,如果没有匹配项,返回空的nodelist。
返回的结果是静态的,之后document的改变不影响之前取得的结果。这两个方法接收三种类型的参数(#id)、(.classname)、(tag)。

截图             this.capture('xxx.png');
 this.captureSelector('part.png','selector');
等待              this.wait(1000,function(){} ); 
提交表单         this.fill();

引用其他js库     var  browser=require('casper').create({
    clientScripts:["jquery.js"]
});


抓取网页内容
var casper=require('casper').create();
casper.start(url);
casper.then(function(){
this.echo(this.getHTML('strong#jd-price'));
require('utils').dump(this.getElementInfo("strong[id='jd-price']"));
require('utils').dump(this.getElementsAttribute("strong[id='jd-price']","html"));
this.echo(this.fetchText('h3'));
});

命令行参数
casperjs  args.js  arg1 arg2 arg3 --option1=value1
//参数
require('utils').dump(casper.cli.args);
casper.echo(casper.cli.get(0));
casper.echo(casper.cli.get('option1'));
//选项
require('utils').dump(casper.cli.options);

选择器
casperjs选择器可以使用CSS3或XPath语法。
CSS选择器
.class  指定class属性
#id     指定id
element1,element2  所有的element1和element2元素
element1+element2  所有紧接在element1后面的element2元素
element1>element2  所有父元素为element1的element2元素
element1 element2  所有element1内部的element2元素
[attribute]        
[attribute=value]

页面查找
this.evaluate()     连接CasperJs环境和页面DOM上下文,解析选择器返回元素或元素属性值。
casper.then(function(){
   this.echo(this.evaluate(function(){
return document.querySelector('ul.name').innerHTML;
   }));
});

引入jquery.js
casper.then(function(){
   this.page.injectJs('jquery.js');
   this.echo(this.evaluate(function(){
return $('p').text().trim();
   }));
});
jquery选择器、选取方法
first()  第一个x元素
last()   最后一个x元素
eq(number) 第number个x元素
eq(-number) 倒数第number个元素
slice(2,5)  第3、4/5个x元素
slice(-3)   最后三个x元素


Java调用CasperJS
String  cmd="casperjs.exe  price.js";
String[] env={"Path=E:\\casperjs\\bin;E:\\phantomjs-1.9.2;"};
Process process=Runtime.getRuntime().exec(cmd,env);

Python调用CasperJS
import subprocess
cmd=["cmd","/c","casperjs.exe","price.js"]
proc=subprocess.Popen(cmd,stdout=subprocess.PIPE)
print(proc.stdout.readlines())

你可能感兴趣的:(程序语言)