获取页面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();
直接上代码:
先安装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();
相关文章推荐
- 抓取Js动态生成数据且以滚动页面方式分页的网页
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- JS-利用ajax获取json数据,并传入页面生成动态tab
- java爬虫抓取天猫商品的价格数据
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- 抓取Js动态生成数据且以滚动页面方式分页的网页
- 如何抓取Js动态生成数据且以滚动页面方式分页的网页
- 根据销量排序,获取商品的数据(价格,名称,url,商品图片)
- js 操作 ftl 页面中的动态表格数据
- HTML页面从JS获取数据
- thinkphp循环数据到页面时,jquery$(this)动态获取指定元素的数据
- 原生js,jquery通过ajax获得后台json数据动态新增页面元素
- web页面上 菜单弹出窗口 动态获取 数据
- Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
- Js动态获取iframe子页面的高度总结
- 根据分类id,获取该分类下的商品数据(商品名,价格,路径,缩略图)
- 利用js将ajax获取到的后台数据动态加载至网页中
- JAVA 爬虫获取js动态生成的网页数据
- 使用selenium抓取JS动态生成的页面
- selenium自动化测试工具开发python爬虫-动态加载页面数据获取