5

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

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

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

4

3 に答える 3

4

Delphi で HTML を解析するための推奨される方法はわかりませんが、もし私だったら、html2text のコピーをバンドルしたくなるでしょう (その名前の古いC++ プログラムまたは新しいPython プログラムのいずれか) 。それらのいずれかへの呼び出しを生成します。

py2exeを使用して、Python html2text を実行可能ファイルに変換できます。どちらの html2text プログラムも GPL の下でライセンスされていますが、実行可能ファイルをアプリにバンドルし、GPL の制限に従ってソースを利用できるようにするだけであれば問題ありません。

于 2010-06-08T21:54:44.070 に答える
1

TWebBrowser を使用する代わりに、TIdHttp とその Get メソッドを直接使用できます。
html 文字列が返されます。

于 2010-06-08T22:19:14.843 に答える
1

これは、 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;

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

于 2010-06-08T23:41:07.737 に答える