本帖最后由 xuzuning 于 2014-06-19 08:48:06 编辑

解决方案 »

  1.   


    我是用NODE.JS 运行.BAT文件 .BAT文件里面再指定JS文件运行的。用什么方法方便找到680个字符的位置呢?
      

  2.   

    nodejs 的也不应该发在这里,何况还是调用 js 
    不是说分工就分家了,而是并非每个 php 玩家也都玩那些的。发到这里多半数事倍功半抓取数据时,你如何取出需要的部分是需要分析原始页面来确定的
      

  3.   


    不好意思,发错版块了,版主应该都懂的吧!
    {
    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('解析数据失败');
    }
    }
    这是截取的全部代码