谁能帮我解释下采集规则的意思 本帖最后由 xuzuning 于 2014-06-19 08:48:06 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我是用NODE.JS 运行.BAT文件 .BAT文件里面再指定JS文件运行的。用什么方法方便找到680个字符的位置呢? nodejs 的也不应该发在这里,何况还是调用 js 不是说分工就分家了,而是并非每个 php 玩家也都玩那些的。发到这里多半数事倍功半抓取数据时,你如何取出需要的部分是需要分析原始页面来确定的 不好意思,发错版块了,版主应该都懂的吧!{ title:'lietou', source:'官网', name:'cqssc', enable:true, timer:'cqssc', option:{ host:"www.iletou.com", timeout:50000, path: '/cqssc/kaijiang/gaopin/kjhistory_12_1.html?t=1', headers:{ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/29.0.1271.64 Safari/537.11" } }, parse:function(str){ try{ return getFromIletouWeb_2(str,1); }catch(err){ throw('解析数据不正确'); } } },//(((function getFromIletouWeb_2(str, type){ str=str.substr(str.indexOf('<table class="stripe">'),680); str=str.substr(str.indexOf('<tbody>'),300); //console.log(str); var reg=/<tr>[\s\S]*?<td>(\d+)<\/td>[\s\S]*?<td>([\d\:\- ]+?)<\/td>[\s\S]*?<td class="ball">((?:[\s\S]*?<span>\d+<\/span>){3,5})[\s\S]*?<\/td>/, match=str.match(reg); var myDate = new Date(); var year = myDate.getFullYear(); //年 var month = myDate.getMonth() + 1; //月 var day = myDate.getDate(); //日 if(month < 10) month="0"+month; if(day < 10) day="0"+day; var mytime=year + "-" + month + "-" + day + " " +myDate.toLocaleTimeString(); //console.log(mytime); //console.log(match); if(!match) throw new Error('数据不正确'); try{ var data={ type:type, time:mytime, number:match[1].replace(/(\d{8})(\d{3})/,'$1-$2') } reg=/<span>(\d+)<\/span>/g; data.data=match[3].match(reg).map(function(v){ var reg=/<span>(\d+)<\/span>/; return v.match(reg)[1]; }).join(','); //console.log(data); return data; }catch(err){ throw('解析数据失败'); }}这是截取的全部代码 php帮助文档 fck编辑器 无法采集含有百分号的图片 php 使用gettext实现国际化问题! 用过的进来讨论一下撒~~ 如何根据ip获得运营商的信息 求助一个算法!麻烦大家帮忙!多谢了 关于遍历CHECKBOX数组得到PHPSESSID的问题,在线等 PHP开源论坛已经定型了,欢迎去测试 lnmp搭建,编译php出现问题 怎么申请1069短信接口,有申请过短信接口的吗。 phpexcel中的中英文导入sqlserver的varchar字段随机出现问号 谁有THINKPHP项目源码简单的 dede限制字段高级会员才能查看出错。。。
我是用NODE.JS 运行.BAT文件 .BAT文件里面再指定JS文件运行的。用什么方法方便找到680个字符的位置呢?
不是说分工就分家了,而是并非每个 php 玩家也都玩那些的。发到这里多半数事倍功半抓取数据时,你如何取出需要的部分是需要分析原始页面来确定的
不好意思,发错版块了,版主应该都懂的吧!
{
title:'lietou',
source:'官网',
name:'cqssc',
enable:true,
timer:'cqssc', option:{
host:"www.iletou.com",
timeout:50000,
path: '/cqssc/kaijiang/gaopin/kjhistory_12_1.html?t=1',
headers:{
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/29.0.1271.64 Safari/537.11"
}
},
parse:function(str){
try{
return getFromIletouWeb_2(str,1);
}catch(err){
throw('解析数据不正确');
}
}
},//(((
function getFromIletouWeb_2(str, type){ str=str.substr(str.indexOf('<table class="stripe">'),680);
str=str.substr(str.indexOf('<tbody>'),300);
//console.log(str);
var reg=/<tr>[\s\S]*?<td>(\d+)<\/td>[\s\S]*?<td>([\d\:\- ]+?)<\/td>[\s\S]*?<td class="ball">((?:[\s\S]*?<span>\d+<\/span>){3,5})[\s\S]*?<\/td>/,
match=str.match(reg);
var myDate = new Date();
var year = myDate.getFullYear(); //年
var month = myDate.getMonth() + 1; //月
var day = myDate.getDate(); //日
if(month < 10) month="0"+month;
if(day < 10) day="0"+day;
var mytime=year + "-" + month + "-" + day + " " +myDate.toLocaleTimeString();
//console.log(mytime);
//console.log(match);
if(!match) throw new Error('数据不正确');
try{
var data={
type:type,
time:mytime,
number:match[1].replace(/(\d{8})(\d{3})/,'$1-$2')
}
reg=/<span>(\d+)<\/span>/g;
data.data=match[3].match(reg).map(function(v){
var reg=/<span>(\d+)<\/span>/;
return v.match(reg)[1];
}).join(',');
//console.log(data);
return data;
}catch(err){
throw('解析数据失败');
}
}
这是截取的全部代码