1. 程式人生 > >update20181214 - uGetHttpData.pas

update20181214 - uGetHttpData.pas

function DecodePJItem(sText: string): TList<TDataItem>;
var
  reg: TRegEx;
  mc: TMatchCollection;
  item: TMatch;
  dataItem: TDataItem;
begin
  Result := TList<TDataItem>.Create;
  sText := reg.Replace(sText, '\n', '');
  sText := reg.Replace(sText, '<tr style="">.*?</tr>', ''
); // sText := reg.Replace(sText, '<td width=".*?">', ''); sText := reg.Replace(sText, '<span class.*?">', ''); sText := reg.Replace(sText, '<td class=.*?>', ''); sText := reg.Replace(sText, '<p class.*?>', ''); sText := reg.Replace(sText, '<input .*?>', ''); sText :
= reg.Replace(sText, '<a.*?>', ''); sText := reg.Replace(sText, '</a>', ''); sText := reg.Replace(sText, '</span>', ''); sText := reg.Replace(sText, '</tr>', '|'); sText := reg.Replace(sText, '<tr>', ''); sText := reg.Replace(sText, '</p>', ''); sText := reg.Replace(sText, '
</td>', ','); sText := reg.Replace(sText, '<span.*?>', ''); reg := TRegEx.Create('(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),(.*?),\|'); mc := reg.Matches(sText); for item in mc do begin if item.Groups.Count = 9 then begin try if item.Groups[8].Value <> '我要買' then Continue; dataItem := TDataItem.Create; dataItem.PublishTime := item.Groups[1].Value; dataItem.Company := item.Groups[2].Value; dataItem.Money := StrToFloatDef(item.Groups[3].Value, 0); dataItem.OutTime := item.Groups[4].Value; dataItem.Deduction := StrToIntDef(item.Groups[5].Value, 0); dataItem.Defect := item.Groups[6].Value; dataItem.TimeLength := item.Groups[7].Value; dataItem.Text := item.Groups[8].Value; dataItem.LeftDay := GetLeftValue(dataItem.OutTime); if dataItem.LeftDay <= 0 then begin SendLog(TDataCollector.MainHandle, Format('%s, %s, 資料異常,跳過!!!',[dataItem.PublishTime, dataItem.Company])); dataItem.Free; Continue; end; dataItem.YearRate := dataItem.Deduction / 1000 * 360 / DataItem.LeftDay; dataItem.New := True; except Continue; end; Result.Add(dataItem); end; end; end;