zoukankan      html  css  js  c++  java
  • 足球*指数及比分数据采集系统

    前言

    很多朋友喜欢足彩,面对网站每期大量对阵却苦于无法找到一种稳定下注的方法,其实开盘指数及临场前指数的变化,各种蕴藏玄机,本系统采集新浪足彩每期指数,生成各种指数数据,并形成每期报表,便于下注者投注参考。通过本系统可生成球队所有对阵比赛数据、及其赢盘指数规律数据,数据可以导出excel表格,方便使用者二次提取。

    运行程序链接:https://pan.baidu.com/s/1yETSldYwSv8kf5NIqGvasA%20
    提取码:ddxq

    界面

     

     

    功能实现

    1.网页抓取

    通过网页抓取,提取每期开盘及最新变动指数、赢盘指数、比分数据

    主要代码:(贴代码比写文字简单,有兴趣的看注解吧)

      1 {/**
      2 
      3 Date:2014-3-20
      4 
      5 Author:吴chunyuan转载请注明出处
      6 
      7 **/}
      8 
      9 procedure TFxlcj.Caiji_xl(OperNum:integer);   {本程序主要处理环节: 采集新浪数据 0-初始化 1-盘中  体球网采集:3-联赛球队 4-期数系列 }
     10 var Rp_Count,Get_Web,LineCount,c,i,j,backStart,Count_ws ,Count_qx:integer;
     11    ThreadId1:DWORD;
     12    Ret_Get_bszl:TArr;
     13   // Fmt   :TCharFormat2;
     14   begin
     15      Get_Web:=1;
     16      if Eqhao.Text='' then
     17        begin
     18          if OperNum<4 then
     19            begin
     20            SendtoMain('采集窗口提示:请输入期号如130808');
     21             exit;
     22            end;
     23        end;
     24 
     25      Csh_qpfx(OperNum); {初始化期号}
     26      Edit2.CopyToClipboard;  //将剪切板初始化
     27      sleep(20);
     28      RichEdit1.PlainText := true;
     29      //WebBrowser1.SetFocus;
     30      
     31     { if WebBrowser1.ReadyState > READYSTATE_LOADING then
     32       begin
     33        WebBrowser1.stop;
     34        WebBrowser1.SetFocus;
     35       end else
     36        begin
     37        SendtoMain('取网页异常,请重来1!');
     38        exit;
     39        end;
     40      }
     41         WebBrowser1.SetFocus;
     42 
     43          Rp_Count:=0;    {初始化重负复制网页的次数,因为有时复制不成功 上限20次}
     44 
     45         Repeat   {复制网页以提取数据}
     46 
     47                try
     48                 webbrowser1.ExecWB(OLECMDID_SELECTALL,0);
     49                 webbrowser1.ExecWB(OLECMDID_COPY,0);
     50               // WebBrowser1.ExecWB(OLECMDID_UNDO, 0);
     51                 Get_Web:=0;
     52                 except
     53                  SendtoMain('复制网页异常,请重来!');
     54                  Get_Web:=1;
     55                end;
     56 
     57              if Get_Web=0 then
     58                 begin
     59                 richedit1.Lines.Clear;
     60                //richedit1.SetFocus;
     61                richedit1.PasteFromClipboard;
     62                WebBrowser1.ExecWB(OLECMDID_UNDO, OLECMDEXECOPT_DODEFAULT);    //取消全选
     63                c:=0;   {寻找选择区域的起点位置}
     64                // backStart   :=   RichEdit1.SelStart;     //备份光标位置
     65                RichEdit1.SelStart   :=   c;   //寻找选择区域的起点位置
     66                // initializeCriticalSection(CS); //没初始化会 提示访问ntdll.dll模块出错
     67                LineCount:=RichEdit1.Lines.Count;
     68                SendtoMain('采集失败,请重来!');
     69                end;
     70             Rp_Count:=Rp_Count+1;
     71          until ((LineCount>100) or (Rp_Count>2) );   //重复不超2次
     72 
     73           {
     74 
     75        WebBrowser1.ExecWB(OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT);  //全选网页
     76       WebBrowser1.ExecWB(OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT);     //复制网页
     77       WordDocu.Range.Paste;            //word文档粘贴
     78      WebBrowser1.ExecWB(OLECMDID_UNDO, OLECMDEXECOPT_DODEFAULT);    //取消全选
     79     }
     80 
     81       if Rp_Count>20 then exit;
     82 
     83          {采集期数序列}
     84 
     85          setlength(Ret_Get_bszl,18);  {初始化数组}
     86 
     87          if OperNum=4 then   //取期号序列
     88            begin
     89             for i:=10 to 50 do
     90              begin
     91                Ret_Get_bszl:=Get_bszl(2,i);
     92                if (Ret_Get_bszl[0]<>'1.0') and (length(Ret_Get_bszl[0])=6)  then
     93                  begin
     94                    Eqhao.Text:=Ret_Get_bszl[0];
     95                    ComboBox2.Items.Clear;
     96                     for j:=0 to 9 do
     97                     ComboBox2.Items.Add(Ret_Get_bszl[j]);
     98                     ComBobox2.ItemIndex:=0;
     99                     //Memo1.Lines.Clear;
    100                      SendtoMain('取期号序列成功:');
    101                      SendtoMain(Ret_Get_bszl[0]+' '+Ret_Get_bszl[1]+' '+Ret_Get_bszl[2]+' '+Ret_Get_bszl[3]+' '+Ret_Get_bszl[4]+' '+Ret_Get_bszl[5]+' '+Ret_Get_bszl[6]+' '+Ret_Get_bszl[7]+' '+Ret_Get_bszl[8]+' '+ Ret_Get_bszl[9]);
    102                     exit;
    103                   end;
    104                end;
    105            end;
    106 
    107     {开始采集数据}
    108     if OperNum<4 then
    109       begin
    110          if OperNum=0 then
    111           SendtoMain('初始化采集中....') else
    112           SendtoMain('盘中采集中....');
    113               Count_ws:=0; //未赛场数
    114               Count_qx:=0;
    115              for   i:=0   to   LineCount-1   do
    116               begin
    117 
    118                j:=Caiji_xl_cjoneline(OperNum,i);
    119                if j=0 then Count_ws:=Count_ws+1;
    120                 if j=2 then Count_qx:=Count_qx+1;
    121                sleep(5);
    122                application.ProcessMessages;    //使用简单多线程
    123 
    124              end;
    125              if Count_ws>0 then
    126             SendtoMain('采集完毕,未赛场数:'+inttostr(Count_ws-1)+',取消场数:'+inttostr(Count_qx)) else
    127              SendtoMain('采集失败!');
    128 
    129 
    130            
    131      end;
    132      
    133    RichEdit1.SelStart   :=   backStart   ;   //恢复光标位置
    134         //webbrowser1.SetFocus;
    135        // WebBrowser1.ExecWB(OLECMDID_UNDO,0);  // OLECMDEXECOPT_DODEFAULT
    136    end;
    137 
    138 主要过程、函数:(贴两个好了。。)
    139 
    140 function TFxlcj.Caiji_xl_cjoneline(OperNum:integer;Num:integer):integer;  //返回 0- 无比分 1-有比分    2-取消 3-其他
    141 var rs,i:integer;
    142  Ret_Get_bszl,sparr:TArr;
    143    fMainMessage,s,strpk,strbf,strypoz,strypsp:string;
    144 begin
    145    // EnterCriticalSection(CS);
    146       rs:=3;
    147     setlength(Ret_Get_bszl,18);
    148      i:=Num;
    149      Ret_Get_bszl:= Get_bszl(1,i);  {取每条比赛记录,返回个字段值}
    150 
    151           {取期号,没用到 if  ( i>=24) and (i<=24)  then
    152             begin
    153             strno:=GetFieldValue(' ',richedit1.Lines.Strings[i],1);
    154             end;}
    155 
    156       if  i>=130 then   //从网页131行开始取比赛资料 
    157       begin
    158           if length(Ret_Get_bszl[1])=1 then  {是比赛记录 将进行:取数-插入bslsz }
    159             begin
    160             g_IfInsert:=IfInsert_bslsz(Ret_Get_bszl[0],Ret_Get_bszl[3],Ret_Get_bszl[5]);
    161             if g_IfInsert<0 then exit;
    162             
    163             if Ret_Get_bszl[9]<>'' then  {无比分}
    164                begin
    165                 rs:=0;
    166                //SendtoMain(strdate+','+str2+','+str3+','+str4+','+str5+','+str6+','+str7+','+str81+','+str82+','+str83+','+str10+','+str11+','+str12);
    167                 try
    168                  if  g_IfInsert=0 then
    169                   s := Format('insert into bslsz (bsrq,xh,bssj,lsmc,zd,rangqiu,kd,sp1,sp2,sp3,xsp1,xsp2,xsp3,qhao)   values (%s,%d,%s,%s,%s,%d,%s,%f,%f,%f,%f,%f,%f,%s)',
    170                  ['#'+Ret_Get_bszl[0]+'#',strtoint(Ret_Get_bszl[2]),quotedstr(Ret_Get_bszl[4]),quotedStr(Ret_Get_bszl[3]),quotedStr(Ret_Get_bszl[5]),strtoint(Ret_Get_bszl[6]),quotedStr(Ret_Get_bszl[7]),strtofloat(Ret_Get_bszl[8]),strtofloat(Ret_Get_bszl[9]),strtofloat(Ret_Get_bszl[10]),strtofloat(Ret_Get_bszl[14]),strtofloat(Ret_Get_bszl[15]),strtofloat(Ret_Get_bszl[16]),Quotedstr(Eqhao.Text)]);
    171                  g_insertflag:=1;
    172                 
    173                  except
    174                  //exit;
    175                  g_insertflag:=0;
    176                  SendtoMain('无SP');
    177                  end;
    178 
    179                 if ( (g_IfInsert>0) and (OperNum=0)) or (OperNum=1) then  {无比分,更新最新xsp--重新初始化 }
    180                  Update_sp(Ret_Get_bszl[0],Ret_Get_bszl[3],Ret_Get_bszl[5],Ret_Get_bszl[8],Ret_Get_bszl[9],Ret_Get_bszl[10],Ret_Get_bszl[14],Ret_Get_bszl[15],Ret_Get_bszl[16],OperNum); {修改xsp1,xsp2,xsp3}
    181 
    182                  {OperNum=1  无比分,更新最新xsp--盘中 }
    183                  {修改xsp1,xsp2,xsp3}
    184               end;
    185 
    186 
    187            if Ret_Get_bszl[9]='' then  {有比分}
    188               begin
    189                  rs:=1;
    190                 try
    191                  strpk:= Return_pank(strtoint(Ret_Get_bszl[6]),strtoint(Ret_Get_bszl[8]),strtoint(Ret_Get_bszl[10]));
    192                  strbf:= Return_bf(strtoint(Ret_Get_bszl[8]),strtoint(Ret_Get_bszl[10]));
    193                  except
    194                  SendtoMain('errcode:2,'+Ret_Get_bszl[5]);
    195                  exit;
    196                  end;
    197 
    198                  //SendtoMain(Ret_Get_bszl[0]+','+Ret_Get_bszl[2]+','+Ret_Get_bszl[3]+','+Ret_Get_bszl[4]+','+Ret_Get_bszl[5]+','+Ret_Get_bszl[6]+','+Ret_Get_bszl[7]+','+Ret_Get_bszl[8]+':'+Ret_Get_bszl[10]+','+Ret_Get_bszl[11]+','+Ret_Get_bszl[12]+','+Ret_Get_bszl[13]+','+Ret_Get_bszl[14]+','+Ret_Get_bszl[15]+','+Ret_Get_bszl[16]+strpk+','+strbf);
    199                  fMainMessage:=Ret_Get_bszl[2]+' '+Ret_Get_bszl[3]+' '+Ret_Get_bszl[5]+'--'+Ret_Get_bszl[7]+' '+Ret_Get_bszl[8]+':'+Ret_Get_bszl[10]+' '+strpk+','+strbf;
    200                  SendtoMain(fMainMessage);
    201                  if  g_IfInsert=0 then
    202                    try
    203                     
    204                     s := Format('insert into bslsz (bsrq,xh,bssj,lsmc,zd,rangqiu,kd,zdrq,kdrq,sp1,sp2,sp3,xsp1,xsp2,xsp3,pjg,bfjg,qhao)   values (%s,%d,%s,%s,%s,%d,%s,%d,%d,%f,%f,%f,%f,%f,%f,%s,%s,%s)',
    205                     ['#'+Ret_Get_bszl[0]+'#',strtoint(Ret_Get_bszl[2]),quotedstr(Ret_Get_bszl[4]),quotedStr(Ret_Get_bszl[3]),quotedStr(Ret_Get_bszl[5]),strtoint(Ret_Get_bszl[6]),quotedStr(Ret_Get_bszl[7]),strtoint(Ret_Get_bszl[8]),strtoint(Ret_Get_bszl[10]),strtofloat(Ret_Get_bszl[11]),strtofloat(Ret_Get_bszl[12]),strtofloat(Ret_Get_bszl[13]),strtofloat(Ret_Get_bszl[14]),strtofloat(Ret_Get_bszl[15]),strtofloat(Ret_Get_bszl[16]),quotedStr(strpk),quotedStr(strbf),Quotedstr(Eqhao.Text)]);
    206 
    207                     except
    208                     showmessage('e:'+s);
    209                     exit;
    210                    end;
    211 
    212                  if  g_IfInsert>0 then
    213                    begin
    214                    setlength(sparr,13);
    215                    sparr:=Bslsz_sp(Ret_Get_bszl[0],Ret_Get_bszl[3],Ret_Get_bszl[5]); { sp1,nsp1,sp2,nsp2,sp3,nsp3,xsp1,nxsp1,xsp2,nxsp2,xsp3,nxsp3}
    216                    //SendtoMain(sparr[0]);
    217                     if strpk='' then  {取最新SP 如果数据库最新 sp 或欧指为-1.0 取网页最新值 2013-7-30  }
    218                        begin  strypoz:=Ret_Get_bszl[11]; strypsp:=Ret_Get_bszl[14];  end;
    219 
    220 
    221                     if strpk='' then
    222                        begin  strypoz:=Ret_Get_bszl[12]; strypsp:=Ret_Get_bszl[15]; end;
    223 
    224                     if strpk='' then
    225                        begin  strypoz:=Ret_Get_bszl[13]; strypsp:=Ret_Get_bszl[16]; end;
    226 
    227                     if strpk='取消' then
    228                        begin  rs:=2;strypoz:='-1.0'; strypsp:='-1.0'; end; {2013-11-4增加,否则Update_bslsz 无数据,出错}
    229 
    230 
    231                      try
    232                       Update_bslsz(Ret_Get_bszl[0],Ret_Get_bszl[3],Ret_Get_bszl[5],strtoint(Ret_Get_bszl[8]),strtoint(Ret_Get_bszl[10]),strpk,strbf,strypsp,strypoz);
    233                        except
    234                       SendtoMain('errcode:update_bslsz'+strypsp+','+strypoz);
    235                       exit;
    236                       end;
    237                   end;
    238             end;
    239 
    240              if  g_IfInsert=0 then
    241              Insert_bslsz(s);
    242         end;{插入结束}
    243        // RichEdit1.SelLength   :=   0;   //恢复选择
    244 
    245        end;
    246        result:=rs;
    247      // LeaveCriticalSection(CS);
    248 end;
    249 
    250 
    251  
    252 
    253 Function TFxlcj.Get_bszl(Flag:Integer;Row:Integer):TArr; {取每行比赛资料,Flag=1比赛资料  2-取期序列}
    254  var
    255  str1,str2,str3,str4,str5,str6,str7,str8,str81,str82,str83,str9,str91,str92,str93,str10,str11,str12:string;
    256   pos1:integer;
    257  begin
    258 
    259       str82:='';
    260       RichEdit1.SelLength   :=   length(richedit1.Lines.Strings[Row]);   //获得选择当前行的长度
    261       str1:= GetFieldValue(' ',richedit1.Lines.Strings[Row],1);
    262       str2:= GetFieldValue(' ',richedit1.Lines.Strings[Row],2);
    263       if Flag=2 then {取期数系列}
    264         begin
    265 
    266           // SendtoMain(str1+','+str2);
    267 
    268            Result[0]:='1.0';
    269            Result[1]:='1.0';
    270            Result[2]:='1.0';
    271            Result[3]:='1.0';
    272            Result[4]:='1.0';
    273            Result[5]:='1.0';
    274            Result[6]:='1.0';
    275            Result[7]:='1.0';
    276            Result[8]:='1.0';
    277            Result[9]:='1.0';
    278            Result[10]:='1.0';
    279            Result[11]:='1.0';
    280            Result[12]:='1.0';
    281            Result[13]:='1.0';
    282            Result[14]:='1.0';
    283            Result[15]:='1.0';
    284            Result[16]:='1.0';
    285            if copy(str2,1,4)='当前' then
    286               begin
    287               Result[0]:=str1;
    288               Result[1]:=copy(str2,5,6);
    289               Result[2]:=copy(str2,11,6);
    290               Result[3]:=copy(str2,17,6);
    291               Result[4]:=copy(str2,23,6);
    292               Result[5]:=copy(str2,29,6);
    293               Result[6]:=copy(str2,35,6);
    294               Result[7]:=copy(str2,41,6);
    295               Result[8]:=copy(str2,47,6);
    296               Result[9]:=copy(str2,53,6);
    297               
    298              end;
    299          exit;
    300          end;
    301          
    302 
    303       str3:= GetFieldValue(' ',richedit1.Lines.Strings[Row],3);
    304       str4:= GetFieldValue(' ',richedit1.Lines.Strings[Row],4);
    305       str5:= GetFieldValue(' ',richedit1.Lines.Strings[Row],5);
    306       pos1:=pos('(',str5);     {去除主队(中)}
    307       if pos1>0 then str5:=copy(str5,1,pos1-1);
    308       str6:= GetFieldValue(' ',richedit1.Lines.Strings[Row],6);
    309       str7:= GetFieldValue(' ',richedit1.Lines.Strings[Row],7);
    310       str8:= GetFieldValue(' ',richedit1.Lines.Strings[Row],8);
    311       pos1:=pos('-',str8);
    312 
    313       if pos1>0 then    {未有比分,无欧指}
    314        begin
    315         str81:='-1.0';
    316         str82:='-1.0';
    317         str83:='-1.0';
    318         end;
    319  {begin 根据str8长度判断 =12  ; >12 ; <12且 <>'---' ;   }
    320 
    321       if length(str8)=12 then    {有大于12的情况 :1.192.1912.19}
    322          begin
    323           str81:=copy(str8,1,4);
    324           str82:=copy(str8,5,4);
    325           str83:=copy(str8,9,4);
    326           end;
    327 
    328           if  str8='---' then
    329            begin
    330            str81:='-1.0';
    331            str82:='-1.0';
    332            str83:='-1.0';
    333            end;
    334 
    335 
    336       if (length(str8)>12) then    {有大于12的情况 :1.19 2.19 12.19}
    337        begin
    338         if  (length(GetFieldValue('.',str8,1))=1) and  (length(GetFieldValue('.',str8,2))=3) and  (length(GetFieldValue('.',str8,3))=4) then
    339           begin
    340            str81:=copy(str8,1,4);
    341            str82:=copy(str8,5,4);
    342            str83:=copy(str8,9,5);
    343            end;
    344                                {12.11 1.23 3.23}
    345         if  (length(GetFieldValue('.',str8,1))=2) and  (length(GetFieldValue('.',str8,2))=3) and  (length(GetFieldValue('.',str8,3))=3) then
    346          begin
    347           str81:=copy(str8,1,5);
    348           str82:=copy(str8,6,4);
    349           str83:=copy(str8,10,4);
    350           end;
    351 
    352                                     {12.11 11.23 3.23}
    353         if  (length(GetFieldValue('.',str8,1))=2) and  (length(GetFieldValue('.',str8,2))=4) and  (length(GetFieldValue('.',str8,3))=3) then
    354          begin
    355           str81:=copy(str8,1,5);
    356           str82:=copy(str8,6,5);
    357           str83:=copy(str8,11,4);
    358           end;
    359 
    360 
    361                                  {1.11 21.23 3.23}
    362          if  (length(GetFieldValue('.',str8,1))=1) and  (length(GetFieldValue('.',str8,2))=4) and  (length(GetFieldValue('.',str8,3))=3) then
    363           begin
    364            str81:=copy(str8,1,4);
    365            str82:=copy(str8,5,5);
    366            str83:=copy(str8,10,4);
    367            end;
    368 
    369                                    {1.11 21.23 13.23}
    370          if  (length(GetFieldValue('.',str8,1))=1) and  (length(GetFieldValue('.',str8,2))=4) and  (length(GetFieldValue('.',str8,3))=4) then
    371           begin
    372            str81:=copy(str8,1,4);
    373            str82:=copy(str8,5,5);
    374            str83:=copy(str8,10,5);
    375            end;
    376 
    377  
    378 
    379 
    380       end;
    381 
    382 
    383       if (length(str8)<12) and (trim(str8)<>'---')   then {有比分 如果* -腰斩不取}
    384        begin
    385         str81:= GetFieldValue(':',str8,1);
    386         str82:=''; { str82='' 无比分的标志}
    387         str83:= GetFieldValue(':',str8,2);
    388          if trim(str8)='*' then
    389             begin
    390              str81:='-1';
    391              str83:='-1';
    392             end;
    393 
    394       end;
    395 
    396   {end 根据str8长度判断 =12  ; >12 ; <12且 <>'---' ;   }
    397 
    398    str9:= GetFieldValue(' ',richedit1.Lines.Strings[Row],9) ;  {SP}
    399    {begin 根据str9长度判断 =12  ; >12 }
    400       if length(str9)=12 then
    401        begin
    402         str91:=copy(str9,1,4);
    403         str92:=copy(str9,5,4);
    404         str93:=copy(str9,9,4);
    405         end;
    406 
    407        if length(str9)>12 then    {有大于12的情况 :1.192.1912.19}
    408         begin
    409           if  (length(GetFieldValue('.',str9,1))=1) and   (length(GetFieldValue('.',str9,2))=3) and  (length(GetFieldValue('.',str9,3))=4) then
    410              begin
    411              str91:=copy(str9,1,4);
    412              str92:=copy(str9,5,4);
    413              str93:=copy(str9,9,5);
    414              end;
    415                                  {12.111.233.23}
    416         if  (length(GetFieldValue('.',str9,1))=2) and  (length(GetFieldValue('.',str9,2))=3) and  (length(GetFieldValue('.',str9,3))=3) then
    417             begin
    418               str91:=copy(str9,1,5);
    419                str92:=copy(str9,6,4);
    420                str93:=copy(str9,10,4);
    421             end;
    422 
    423                                   {1.1121.233.23}
    424            if  (length(GetFieldValue('.',str9,1))=1) and  (length(GetFieldValue('.',str9,2))=4) and  (length(GetFieldValue('.',str9,3))=3) then
    425               begin
    426               str91:=copy(str9,1,4);
    427               str92:=copy(str9,5,5);
    428               str93:=copy(str9,10,4);
    429               end;
    430 
    431      end;
    432    {end根据str9长度判断 =12  ; >12 }
    433 
    434    {begin 以下取 str10,str11,str12 ,str91,str,92,str93}
    435       if length(str9)>=12 then   {有比分时的nsp}
    436           begin
    437            str10:= GetFieldValue(' ',richedit1.Lines.Strings[Row],11);
    438            str11:= GetFieldValue(' ',richedit1.Lines.Strings[Row],12);
    439            str12:= GetFieldValue(' ',richedit1.Lines.Strings[Row],13);
    440            if length(str10)=1 then str10:='-1.0';
    441            if length(str11)=1 then str11:='-1.0';
    442            if length(str12)=1 then str12:='-1.0';
    443           end;
    444 
    445 
    446        if str9='---' then   {有比分时无oz-20130814}
    447          begin
    448           str91:='-1.0';
    449           str92:='-1.0';
    450           str93:='-1.0';
    451            str10:= GetFieldValue(' ',richedit1.Lines.Strings[Row],11);
    452            str11:= GetFieldValue(' ',richedit1.Lines.Strings[Row],12);
    453            str12:= GetFieldValue(' ',richedit1.Lines.Strings[Row],13);
    454            if length(str10)=1 then str10:='-1.0';
    455            if length(str11)=1 then str11:='-1.0';
    456            if length(str12)=1 then str12:='-1.0';
    457           end;
    458 
    459         if length(str8)>=12 then  {无比分nsp}
    460         begin
    461         str10:= GetFieldValue(' ',richedit1.Lines.Strings[Row],10);
    462         str11:= GetFieldValue(' ',richedit1.Lines.Strings[Row],11);
    463         str12:= GetFieldValue(' ',richedit1.Lines.Strings[Row],12);
    464         if trim(str10)='-' then str10:='-1.0' ;
    465         if trim(str11)='-' then str11:='-1.0' ;
    466         if trim(str12)='-' then str12:='-1.0' ;
    467         end;
    468   {end 取 str10,str11,str12 ,str91,str,92,str93}
    469 
    470    if length(str1)>4 then{取比赛日期}
    471    g_strdate:=str1;
    472 
    473    {返回各字段到TArr }
    474    Result[0]:=g_strdate;
    475    Result[1]:=str1;
    476    Result[2]:=str2;
    477    Result[3]:=str3;
    478    Result[4]:=str4;
    479    Result[5]:=str5;
    480    Result[6]:=str6;
    481    Result[7]:=str7;
    482    Result[8]:=str81;
    483    Result[9]:=str82;
    484    Result[10]:=str83;
    485    Result[11]:=str91;
    486    Result[12]:=str92;
    487    Result[13]:=str93;
    488    Result[14]:=str10;
    489    Result[15]:=str11;
    490    Result[16]:=str12;
    491 
    492    if Result[11]='' then   Result[11]:='1.0';
    493     if Result[12]='' then Result[12]:='1.0';
    494     if Result[13]='' then Result[13]:='1.0';
    495    if Result[14]='' then  Result[14]:='1.0';
    496     if Result[15]='' then Result[15]:='1.0';
    497     if Result[16]='' then Result[16]:='1.0';
    498 
    499 end;
    500 
    501 function TFxlcj.Caiji_xl_cjoneline(OperNum:integer;Num:integer):integer;  //返回 0- 无比分 1-有比分    2-取消 3-其他
    502 var rs,i:integer;
    503  Ret_Get_bszl,sparr:TArr;
    504    fMainMessage,s,strpk,strbf,strypoz,strypsp:string;
    505 begin
    506    // EnterCriticalSection(CS);
    507       rs:=3;
    508     setlength(Ret_Get_bszl,18);
    509      i:=Num;
    510      Ret_Get_bszl:= Get_bszl(1,i);  {取每条比赛记录,返回个字段值}
    511 
    512           {取期号,没用到 if  ( i>=24) and (i<=24)  then
    513             begin
    514             strno:=GetFieldValue(' ',richedit1.Lines.Strings[i],1);
    515             end;}
    516 
    517       if  i>=130 then   //从网页131行开始取比赛资料 
    518       begin
    519           if length(Ret_Get_bszl[1])=1 then  {是比赛记录 将进行:取数-插入bslsz }
    520             begin
    521             g_IfInsert:=IfInsert_bslsz(Ret_Get_bszl[0],Ret_Get_bszl[3],Ret_Get_bszl[5]);
    522             if g_IfInsert<0 then exit;
    523             
    524             if Ret_Get_bszl[9]<>'' then  {无比分}
    525                begin
    526                 rs:=0;
    527                //SendtoMain(strdate+','+str2+','+str3+','+str4+','+str5+','+str6+','+str7+','+str81+','+str82+','+str83+','+str10+','+str11+','+str12);
    528                 try
    529                  if  g_IfInsert=0 then
    530                   s := Format('insert into bslsz (bsrq,xh,bssj,lsmc,zd,rangqiu,kd,sp1,sp2,sp3,xsp1,xsp2,xsp3,qhao)   values (%s,%d,%s,%s,%s,%d,%s,%f,%f,%f,%f,%f,%f,%s)',
    531                  ['#'+Ret_Get_bszl[0]+'#',strtoint(Ret_Get_bszl[2]),quotedstr(Ret_Get_bszl[4]),quotedStr(Ret_Get_bszl[3]),quotedStr(Ret_Get_bszl[5]),strtoint(Ret_Get_bszl[6]),quotedStr(Ret_Get_bszl[7]),strtofloat(Ret_Get_bszl[8]),strtofloat(Ret_Get_bszl[9]),strtofloat(Ret_Get_bszl[10]),strtofloat(Ret_Get_bszl[14]),strtofloat(Ret_Get_bszl[15]),strtofloat(Ret_Get_bszl[16]),Quotedstr(Eqhao.Text)]);
    532                  g_insertflag:=1;
    533                 
    534                  except
    535                  //exit;
    536                  g_insertflag:=0;
    537                  SendtoMain('无SP');
    538                  end;
    539 
    540                 if ( (g_IfInsert>0) and (OperNum=0)) or (OperNum=1) then  {无比分,更新最新xsp--重新初始化 }
    541                  Update_sp(Ret_Get_bszl[0],Ret_Get_bszl[3],Ret_Get_bszl[5],Ret_Get_bszl[8],Ret_Get_bszl[9],Ret_Get_bszl[10],Ret_Get_bszl[14],Ret_Get_bszl[15],Ret_Get_bszl[16],OperNum); {修改xsp1,xsp2,xsp3}
    542 
    543                  {OperNum=1  无比分,更新最新xsp--盘中 }
    544                  {修改xsp1,xsp2,xsp3}
    545               end;
    546 
    547 
    548            if Ret_Get_bszl[9]='' then  {有比分}
    549               begin
    550                  rs:=1;
    551                 try
    552                  strpk:= Return_pank(strtoint(Ret_Get_bszl[6]),strtoint(Ret_Get_bszl[8]),strtoint(Ret_Get_bszl[10]));
    553                  strbf:= Return_bf(strtoint(Ret_Get_bszl[8]),strtoint(Ret_Get_bszl[10]));
    554                  except
    555                  SendtoMain('errcode:2,'+Ret_Get_bszl[5]);
    556                  exit;
    557                  end;
    558 
    559                  //SendtoMain(Ret_Get_bszl[0]+','+Ret_Get_bszl[2]+','+Ret_Get_bszl[3]+','+Ret_Get_bszl[4]+','+Ret_Get_bszl[5]+','+Ret_Get_bszl[6]+','+Ret_Get_bszl[7]+','+Ret_Get_bszl[8]+':'+Ret_Get_bszl[10]+','+Ret_Get_bszl[11]+','+Ret_Get_bszl[12]+','+Ret_Get_bszl[13]+','+Ret_Get_bszl[14]+','+Ret_Get_bszl[15]+','+Ret_Get_bszl[16]+strpk+','+strbf);
    560                  fMainMessage:=Ret_Get_bszl[2]+' '+Ret_Get_bszl[3]+' '+Ret_Get_bszl[5]+'--'+Ret_Get_bszl[7]+' '+Ret_Get_bszl[8]+':'+Ret_Get_bszl[10]+' '+strpk+','+strbf;
    561                  SendtoMain(fMainMessage);
    562                  if  g_IfInsert=0 then
    563                    try
    564                     
    565                     s := Format('insert into bslsz (bsrq,xh,bssj,lsmc,zd,rangqiu,kd,zdrq,kdrq,sp1,sp2,sp3,xsp1,xsp2,xsp3,pjg,bfjg,qhao)   values (%s,%d,%s,%s,%s,%d,%s,%d,%d,%f,%f,%f,%f,%f,%f,%s,%s,%s)',
    566                     ['#'+Ret_Get_bszl[0]+'#',strtoint(Ret_Get_bszl[2]),quotedstr(Ret_Get_bszl[4]),quotedStr(Ret_Get_bszl[3]),quotedStr(Ret_Get_bszl[5]),strtoint(Ret_Get_bszl[6]),quotedStr(Ret_Get_bszl[7]),strtoint(Ret_Get_bszl[8]),strtoint(Ret_Get_bszl[10]),strtofloat(Ret_Get_bszl[11]),strtofloat(Ret_Get_bszl[12]),strtofloat(Ret_Get_bszl[13]),strtofloat(Ret_Get_bszl[14]),strtofloat(Ret_Get_bszl[15]),strtofloat(Ret_Get_bszl[16]),quotedStr(strpk),quotedStr(strbf),Quotedstr(Eqhao.Text)]);
    567 
    568                     except
    569                     showmessage('e:'+s);
    570                     exit;
    571                    end;
    572 
    573                  if  g_IfInsert>0 then
    574                    begin
    575                    setlength(sparr,13);
    576                    sparr:=Bslsz_sp(Ret_Get_bszl[0],Ret_Get_bszl[3],Ret_Get_bszl[5]); { sp1,nsp1,sp2,nsp2,sp3,nsp3,xsp1,nxsp1,xsp2,nxsp2,xsp3,nxsp3}
    577                    //SendtoMain(sparr[0]);
    578                     if strpk='' then  {取最新SP 如果数据库最新 sp 或欧指为-1.0 取网页最新值 2013-7-30  }
    579                        begin  strypoz:=Ret_Get_bszl[11]; strypsp:=Ret_Get_bszl[14];  end;
    580 
    581 
    582                     if strpk='' then
    583                        begin  strypoz:=Ret_Get_bszl[12]; strypsp:=Ret_Get_bszl[15]; end;
    584 
    585                     if strpk='' then
    586                        begin  strypoz:=Ret_Get_bszl[13]; strypsp:=Ret_Get_bszl[16]; end;
    587 
    588                     if strpk='取消' then
    589                        begin  rs:=2;strypoz:='-1.0'; strypsp:='-1.0'; end; {2013-11-4增加,否则Update_bslsz 无数据,出错}
    590 
    591 
    592                      try
    593                       Update_bslsz(Ret_Get_bszl[0],Ret_Get_bszl[3],Ret_Get_bszl[5],strtoint(Ret_Get_bszl[8]),strtoint(Ret_Get_bszl[10]),strpk,strbf,strypsp,strypoz);
    594                        except
    595                       SendtoMain('errcode:update_bslsz'+strypsp+','+strypoz);
    596                       exit;
    597                       end;
    598                   end;
    599             end;
    600 
    601              if  g_IfInsert=0 then
    602              Insert_bslsz(s);
    603         end;{插入结束}
    604        // RichEdit1.SelLength   :=   0;   //恢复选择
    605 
    606        end;
    607        result:=rs;
    608      // LeaveCriticalSection(CS);
    609 end;

    2.数据分析

    比赛结束,根据采集到的数据生成分析数据,包括:每期胜、负、平的场数,计算赢盘平均指数,数据展示每项指标提供排序,可以得出每期赢盘规律性结果。

  • 相关阅读:
    批量删除.svn文件夹、.svn文件
    Windows 7下Git SSH 创建Key的步骤
    Git:本地项目与远程仓库的git/clone
    git解决二进制文件冲突
    git设置mergetool可视化工具
    redhat7.2配置yum源
    project2016安装与破解
    strace 使用案例
    运维老鸟教你安装centos6.5如何选择安装包
    CSS限制
  • 原文地址:https://www.cnblogs.com/realhope/p/4312492.html
Copyright © 2011-2022 走看看