plantomjs&casperjs Bertha 。 2022-08-09 00:35 145阅读 0赞 ### ### ### 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())
还没有评论,来说两句吧...