10

Web ページのグループをクロールするアプリケーションを作成しています。ページのソース コード全体を取得するのではなく、すべてのコンテンツを取得して保存し、データベース内にプレーン テキストとしてページを保存できるようにしたいと考えています。コンテンツは他のアプリケーションで使用され、ユーザーが読むことはないため、人間が完全に判読できる必要はありません。

最初は、正規表現を使用することを考えていましたが、Web ページの有効性を制御することはできず、正規表現がコンテンツを提供しない可能性が非常に高くなります。

文字列内にソース コードがある場合、そのソース コードの文字列を C# の単なるコンテンツに変換するにはどうすればよいですか?

4

4 に答える 4

22

あなたが何を望んでいるかは 100% 明確ではありませんが、テキストからマークアップを差し引いたものが必要だと思います。それで:

string html;
// obtain some arbitrary html....
using (var client = new WebClient()) {
    html = client.DownloadString("http://stackoverflow.com/questions/2038104");
}
// use the html agility pack: http://www.codeplex.com/htmlagilitypack
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
StringBuilder sb = new StringBuilder();
foreach (HtmlTextNode node in doc.DocumentNode.SelectNodes("//text()")) {
    sb.AppendLine(node.Text);
}
string final = sb.ToString();
于 2010-01-10T18:58:25.047 に答える
7

HTML を自分で解析しないでください。標準の正規表現だけを使用して HTML を解析することはできません。それは不可能です。

そこにはたくさんの無料のライブラリがあります。.NET の世界で最高の無料のものの 1 つはHTML Agility Packです。

HTML Agility Pack は、正規表現や XML などのその他の基本的な解析ではほとんど行われない不正な形式のドキュメントもサポートします。

于 2010-01-10T18:52:36.540 に答える
0

マークアップから生のテキストを取り除き、それを私の記事Convert HTML to Textで提示するコードを書きました。提示されたコードは非常にシンプルで軽量です。

軽量の HTML パーサーも作成し、Github にHTML Monkeyとして投稿しました。これはより完全な解決策であり、解析されたマークアップを変換してテキストのみを取得するのは簡単な作業です。私はまだこのプロジェクトに取り組んでおり、それがどのように機能するかについてのフィードバックを探しています。

于 2017-11-27T16:42:10.840 に答える