質問

HTMLがいくつかあり、実際に書かれたテキストをページから抽出する必要があります。

これまでのところ、Webブラウザーを使用してページをレンダリングしてから、ドキュメントプロパティに移動してテキストをつかんでみました。これは機能しますが、ブラウザがサポートされている場合のみ(つまり、comオブジェクト)。問題は、これもワインの下で実行できるようにしたいので、IE COMを使用しないソリューションが必要です。

これを行うには、合理的なプログラム的な方法が必要です。

役に立ちましたか?

解決

DelphiでHTMLを解析する推奨方法が何であるかはわかりませんが、もしそれが私だったら、HTML2Textのコピーを束ねたいだけです(古いもののいずれか C ++プログラム その名前または新しいものによって Pythonプログラム)そして、それらのいずれかに電話をかけます。

python html2textを使用して実行可能ファイルに変えることができます py2exe. 。両方のHTML2TEXTプログラムはGPLの下でライセンスされていますが、実行可能ファイルをアプリにバンドルし、GPLの制限に応じてソースを利用できるようにするだけでは、大丈夫です。

他のヒント

Twebbrowserを使用する代わりに、TidhttpとそのGETメソッドを直接使用できます。
HTML文字列を取り戻します。

これが素敵なシンプルなルーチンです、 Scalabiumからコピー:

function StripHTMLTags(const strHTML: string): string;
var
  P: PChar;
  InTag: Boolean;
  i, intResultLength: Integer;
begin
  P := PChar(strHTML);
  Result := '';

  InTag := False;
  repeat
    case P^ of
      '<': InTag := True;
      '>': InTag := False;
      #13, #10: ; {do nothing}
      else
        if not InTag then
        begin
          if (P^ in [#9, #32]) and ((P+1)^ in [#10, #13, #32, #9, '<']) then
          else
            Result := Result + P^;
        end;
    end;
    Inc(P);
  until (P^ = #0);

  {convert system characters}
  Result := StringReplace(Result, '&quot;', '"',  [rfReplaceAll]);
  Result := StringReplace(Result, '&apos;', '''', [rfReplaceAll]);
  Result := StringReplace(Result, '&gt;',   '>',  [rfReplaceAll]);
  Result := StringReplace(Result, '&lt;',   '<',  [rfReplaceAll]);
  Result := StringReplace(Result, '&amp;',  '&',  [rfReplaceAll]);
  {here you may add another symbols from RFC if you need}
end;

その後、これを簡単に変更して、必要なことを正確に実行できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top