您的位置:首页 > 编程语言 > ASP

通过交互式网页爬取,抓取天猫商品价格

2015-03-30 09:59 423 查看
通过交互式网页爬取,抓取天猫商品价格。

方式:模拟点击颜色分类,然后读取定价

参考(1):http://www.cnblogs.com/xinzhyu/p/4214669.html

主要利用CasperJS工具包:http://casperjs.org/

其中最重要的是通过css3选择器,来选取需要操作的网页DOM元素,css3选择器参见:http://www.w3cplus.com/css3/basic-selectors

查看元素的小技巧:

在浏览器上,相应元素处单击右键,选择“审查元素”,可以看到相应元素的html代码。

选择器测试小技巧:

IE或firefox,F12打开开发者窗口,在搜索栏中输入选择器,可检测选择器效果。

IE:



Firefox:



下面代码使用casperjs tm.js运行:

var casper = require('casper').create({
clientScripts: ["jquery-1.8.0.js"],
verbose: false,
logLevel: 'debug',
pageSettings: {
loadImages: false, // The WebPage instance used by Casper will
loadPlugins: false // use these settings
}
});
phantom.outputEncoding = "gbk";//解决乱码问题

//获取需要采集的url列表
casper.start('http://detail.tmall.com/item.htm?spm=a220m.1000858.1000725.5.DOIb7J&id=15770542928&skuId=77000178467&cat_id=2&rn=834703bc8f2c7b8023fafe89107e079c&user_id=291487571&is_b=1', function() {
console.log(this.getCurrentUrl());
//casper.GetDetailUrl(url);
});

//处理当前页面的所有sku价格与信息
casper.then(function getPic() {
product = casper.evaluate(function getProductFromPage() {
return $('ul[class*="tb-img"]').children().size();
});

console.log(product);

var str = ''
for (var i = 1; i <= product; i++) {
str += casper.getPrice(i) + "|";
}

var item = new Object();
item.price = str;
item.numiid = this.getCurrentUrl();

console.log(str);
});

//获取商品的价格
casper.getPrice = function(index) {
var dd = casper.clickByImg(index);
if (dd == -1) {
return '';
}

productPrice = casper.evaluate(function getPriceFromPage() {
return $('.tm-price').first().text().trim();
});

return (dd + "_" + productPrice);
};

//点击小图及获取此商品的data-value
casper.clickByImg = function(index) {
this.click('ul.tb-img>li:nth-child(' + index + ') a');
return index;
};

casper.run();


以上代码参考(1)修改,仅实现抓取一个给定链接的商品价格,并在控制台输出。若要通过node.js来对链接列表中的商品进行多线程抓取,并且把抓到的价格通过json post到服务器,可以参考原文的方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  CasperJS