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;