簡體   English   中英

從html文檔delphi中檢索一些值

[英]Retrieving some values from html document delphi

我想問一個人如何從網絡文件夾上的HTML文檔中提取一些信息。 並將它們保存到備忘錄或文本文件中。

HTML文件包含以下信息:

<div>
<a name="N02CB3FB0N02CB7834"></a>
<table width="600" class="data">
<tr>
<td width="200" valign="middle" style="background-color:white;" rowspan="11"><a href="file://///SRVTOPS/TRUMPF_PDM2/DATA_LASER/Pellenc/Cierny/04_0/108536B.GEO"><img width="200" alt="108536B.GEO" src="file://///SRVTOPS/TRUMPF_PDM2/DATA_ORDER/JOBM3046/JOBM3046_1_108536B_1.BMP"></a></td><td valign="bottom">C. d&iacute;lu:
                      </td><td valign="bottom">1&nbsp;
                      </td>
</tr>
<tr>
<td valign="bottom">Dil:
                      </td><td valign="bottom">108536B&nbsp;
                      </td>
</tr>
<tr>
<td valign="bottom">N&aacute;zev v&yacute;kresu:
                      </td><td valign="bottom">PORTEUR&nbsp;
                      </td>
</tr>
<tr>
<td valign="bottom">C&iacute;slo zak&aacute;zky:
                      </td><td valign="bottom">*</td>
</tr>
<tr>
<td valign="bottom">zakaznik</td><td valign="bottom">Pellenc</td>
</tr>
<tr>
<td valign="bottom">ks:
                      </td><td valign="bottom">9</td>
</tr>
<tr>
<td valign="bottom">Rozmer:
                      </td><td valign="bottom">850.0 mm
                         &nbsp;x
                         31.2 mm</td>
</tr>
<tr>
<td valign="bottom">Plocha:
                      </td><td valign="bottom">26107.27 mm2</td>
</tr>
<tr>
<td valign="bottom">Hmotnost:
                      </td><td valign="bottom">0.820 kg
                            </td>
</tr>
<tr>
<td valign="bottom">Trvani:
                      </td><td valign="bottom">00:
                00:
                31</td>
</tr>
<tr>
<td valign="bottom">Soubor dilu:
                      </td><td valign="bottom"><a href="file://///SRVTOPS/TRUMPF_PDM2/DATA_LASER/Pellenc/Cierny/04_0/108536B.GEO">108536B.GEO</a></td>
</tr>
</table>
</div>
<div>
<a name="N02CB3FB0N02CB7FA8"></a>
<table width="600" class="data">
<tr>
<td width="200" valign="middle" style="background-color:white;" rowspan="11"><a href="file://///SRVTOPS/TRUMPF_PDM2/DATA_LASER/VYTSTUHA_8KS.GEO"><img width="200" alt="VYTSTUHA_8KS.GEO" src="file://///SRVTOPS/TRUMPF_PDM2/DATA_ORDER/JOBM3046/JOBM3046_1_VYTSTUHA_8KS_2.BMP"></a></td><td valign="bottom">C. d&iacute;lu:
                      </td><td valign="bottom">2&nbsp;
                      </td>
</tr>
<tr>
<td valign="bottom">Dil:
                      </td><td valign="bottom">NOID_2&nbsp;
                      </td>
</tr>
<tr>
<td valign="bottom">N&aacute;zev v&yacute;kresu:
                      </td><td valign="bottom">&nbsp;
                      </td>
</tr>
<tr>
<td valign="bottom">C&iacute;slo zak&aacute;zky:
                      </td><td valign="bottom">*</td>
</tr>
<tr>
<td valign="bottom">zakaznik</td><td valign="bottom"></td>
</tr>
<tr>
<td valign="bottom">ks:
                      </td><td valign="bottom">8</td>
</tr>
<tr>
<td valign="bottom">Rozmer:
                      </td><td valign="bottom">140.0 mm
                         &nbsp;x
                         48.8 mm</td>
</tr>
<tr>
<td valign="bottom">Plocha:
                      </td><td valign="bottom">4271.95 mm2</td>
</tr>
<tr>
<td valign="bottom">Hmotnost:
                      </td><td valign="bottom">0.134 kg
                            </td>
</tr>
<tr>
<td valign="bottom">Trvani:
                      </td><td valign="bottom">00:
                00:
                07</td>
</tr>
<tr>
<td valign="bottom">Soubor dilu:
                      </td><td valign="bottom"><a href="file://///SRVTOPS/TRUMPF_PDM2/DATA_LASER/VYTSTUHA_8KS.GEO">VYTSTUHA_8KS.GEO</a></td>
</tr>
</table>
<hr>
</di>

所以為了求愛,我需要。 108536,VYTSTUHA_8KS

對於每個文件,我需要找到一個BMP文件並將其放在圖像上。

非常感謝

您好,對不起,是的,我知道如何讀取HTML文件,並將其放入便箋中,但是在我需要查找一些信息之后。 這是將HTML轉換為備忘錄的代碼:

begin
  if OpenDialog1.Execute then
  begin
    sHTMLFile := OpenDialog1.FileName;
    Strl := TStringList.Create;
    try
      Strl.LoadFromFile(sHTMLFile);
      Idoc := CreateComObject(Class_HTMLDOcument) as IHTMLDocument2;
      try
        IDoc.designMode := 'on';
        while IDoc.readyState <> 'complete' do
          Application.ProcessMessages;
        v := VarArrayCreate([0, 0], VarVariant);
        v[0] := Strl.Text;
        IDoc.Write(PSafeArray(System.TVarData(v).VArray));
        IDoc.designMode := 'off';
        while IDoc.readyState <> 'complete' do
          Application.ProcessMessages;
        Memo1.Lines.Text := IDoc.body.innerText;
      finally
        IDoc := nil;
      end;
    finally
      Strl.Free;
    end;
  end;
end; 

使用http://destructor.de中的 TXMLParser解析HTML文檔並提取您在掃描過程中所需的信息。

通過將html加載到字符串中並使用Pos查找所需的文本,我已經成功完成了很多次。

例如,要獲取Dil值,請在查找文本之前使用已知的“目標”調用函數,例如“ Dil:”。

<td valign="bottom">Dil:
        </td><td valign="bottom">108536B&nbsp;
                      </td>

使用“ Dil:”作為ATag參數並使用HTML作為html來調用此函數。

function GetTagValue(HTML, ATag: String): String;
var P: Integer;
  S: String;
begin
  S := HTML;
  P := Pos(ATag, S);
  HTML := Copy(S, P, 99999);
  P := Pos('bottom">', S);
  HTML := Copy(S, P + 8, 99999);
  P := Pos('&nbsp', S);

  Result := Copy(S, 1, P-1);
end;

我只是以此為例-您可能要先進行測試!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM