做互联网的都知道进来使用微信营销的威力,我们公司是一个初创团队,主要服务是做大数据处理,短时间想通过微信来推广。
条件一就是必须拿到用户的手机号,然后把手机号加入到通讯录,这样就可以加微信了,我们的目标用户是中小企业,于是就选了阿里巴巴作为数据的来源。
之前我们的数据挖掘时采用python,对于nodejs迷,怎么能放过呢。好了废话就不说了,开始我们的node数据挖掘之路,小伙伴们 Let Go!
数据分析 首先打开阿里巴巴的企业列表页 http://daili.1688.com/daili/list.htm?spm=a268e.6875057.1996408053.60 打开chrome调试工具发现他的数据加载时ajax加载的
pageNum 对应的就是分页号 stdcategoryid1 对应的就是分页号 是行业分类
如 13:建材 58:照明工业 59:五金工具 18:户外运动 7:数码、电脑 返回的json结构如下 { "count": 373, "data": [ {这里就是我们需要的数据},{},……] "isSuccess": true, "success": “true” }
好了知道数据结构了 该我们nodeJS 大神 上场了,伙伴们拿好小板凳观战;
主要用到的模块 jquery ,jsdom nodegrass nodegrass git://github.com/scottkiss/nodegrass.git
核心代码
新建一个getdata.js 抓取动作
function getHtml(pageid,cid){
var url = 'http://daili.1688.com/daili/ajax.json?action=list/list_action&event_submit_doQueryFromList=true&pageNum='+pageid+'&pageSize=15&stdcategoryid1='+cid+'&_=1388454529278'
// var url = 'http://xtzy.chinacourt.org/'+pageid
nodegrass.get(url,function(data,status,headers){
alibabaToDb(data);
return
},'utf-8').on('error', function(e) {
console.log("Got error: " + e.message);
});
}
//数据提取 阿里巴巴 规则
function alibabaToDb(data){
var list = eval('('+data+')');
$.each(list.data, function(index, val) {
console.log(val.tel);
var value=[];
value['companyname']= val.companyname;
value['companyintroduction']= val.companyintroduction;
value['stdcategoryid1']= val.stdcategoryid1;
value['tel']= val.tel;
value['winportdomain']= val.winportdomain;
value['brandlogourl']= val.brandlogourl;
value['createdTime']= timestamp();
// console.log(value);
sqlInsert('enterprise',value);
});
}
// 向数据库插入一条或多条数据的标准方法
function sqlInsert(table,fields){
var field='';
var val = '';
for(key in fields){
field += key+',';
val += '"'+fields[key]+'",';
// console.log(key);
}
field = field.substring(0, field.length-1)
val = val.substring(0, val.length-1)
var sql = 'INSERT INTO '+ table +'('+ field +') VALUES('+ val+')';
// console.log(sql);
connection.query(sql, function(err,res,fields){
if(err){
return null
}
// console.log(res);
return res;
connection.end();
}
);
}
执行 node getdata.js 几秒之内数据就啪啪进库了。感觉比python快多了; 感兴趣的同学可以看下我们的产品商战雷达tech.bss360.com; 目前我们的爬虫基本实现了分布式,自动化抓取任务了。主程序是python写的,这个只是玩玩,以后考虑转移到node;
下次再讲下怎么转移到微信
顶一下,这个很有商业价值啊,方向向征信体系靠,潜力无穷。 刚试了一下: 安装方式挺怪的,如果2步并作1步就好了。还有不是插件里有个main.html么,直接搜索更好。 现在其实是一个定向搜索,但征信体系是多维度的,把数据从一个地方搬到另一个地方还没有产生价值,如果做关联数据分析就有意思了。 举例来说,一个企业的法人和实际控制人,到底哪个才是拍板的?就不好搞了,因为一般这样的调查行为,都需要跟有话语权的人沟通。
总的来说:很不错,明年打算也做定向搜索,跟你们业务不冲突,放心。现在还在技术选型,对Node扬长避短,让node只做层“皮”,做IO型模块,希望能相互交流下技术。