您的位置:首页 > Web前端 > JavaScript

获取页面js动态写入的数据(抓取天猫商品价格)

2013-10-26 10:11 597 查看
4000

直接上代码:

先安装phantomjs,然后安装casperjs,注意要添加系统环境变量。

参考:

http://blog.csdn.net/xiarendeniao/article/details/7740375

http://www.cnblogs.com/ziyunfei/archive/2012/09/27/2706254.html

http://www.oschina.net/code/snippet_84535_16533

php代码:

for($i=0; $i<1000;$i++){

$limit = $i*$perpage;
$limit = "$limit,$perpage";
$goods = $db->GetRow('表','id,url,key_id,orig_id','orig_id <= 9834','','orig_id desc',$limit);
if($goods){
foreach($goods as $k=>$v){
$url = $v['url'];
$id = $v['id'];
$command = 'casperjs js存放的路劲test.js "'.$url.'" "'.$id.'" ';
echo $j.": ".$command."\r\n";
exec($command,$rec);
$j++;
//if($j==10) exit('调试');
sleep(2);
}
}else{
break;
}
}

js代码:

var casper = require('casper').create({

  pageSettings: {

    loadImages:  false, // 不加载图片,减少请求

  }

});

var system = require('system');

var url = system.args[4];

var key_id = system.args[5];

var fs = require('fs');

casper.start(url);
casper.waitForSelector("#J_PromoBox strong.J_CurPrice", function() {
//this.page.switchToChildFrame(0); // 页面包含 iFrame
//fs.write("2.html", this.getPageContent(), 'w');  // 保存 iFrame 里的内容
str = this.getPageContent();
var reg = /<strong class="J_CurPrice">(.*?)<\/strong>/;
str = reg.exec(str)
//this.echo(str);
if(str){
var res = str[1];
var _return = res;
reg = /(.*)-/;
var res_ = reg.exec(res);
if(res_){
_return = res_[1];
}
_ret = 'update to8to_taobao_item set rates = '+_return+ ' where id = ' +key_id+ ';';
this.echo(_ret);
fs.write("update.sql", _ret+"\n", 'a');
}

}
,function() {
this.die('Timeout reached. Fail whale?').exit();             //失败时调用的函数,输出一个消息,并退出
}, 2000
);   
casper.run();
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: