0

OK iveはこのコードを取得しました:

public static string ScreenScrape(string url)
    {
        System.Net.WebRequest request = System.Net.WebRequest.Create(url);
        // set properties of the request
        using (System.Net.WebResponse response = request.GetResponse())
        {
            using (System.IO.StreamReader reader = new System.IO.StreamReader(response.GetResponseStream()))
            {
                return reader.ReadToEnd();
            }
        }
    }

ここで、テキストをフィルタリングしてdiv class = "comment"を取得したいのですが、正規表現を使用する以外のオプションはありますか?それともそれが唯一の方法ですか?

ありがとう

4

4 に答える 4

10

HTML Agility Packを使用する必要があります。

例えば:

var doc = new HtmlWeb().Load(url);
var comments = doc.Descendants("div")
                  .Where(div => div.GetAttributeValue("class", "") == "comment");

これは見つからないことに注意してください<div class="OtherClass comment">。あなたがそれを探しているなら、あなたは電話することができますIndexOf.

于 2010-02-09T13:53:06.893 に答える
1

HtmlAgilityPack は、html ファイルを操作できる単なるパッケージですが、スクリーン スクレイピングを行う場合は、PhantomJS を使用した Selenium WebDriver を使用することをお勧めします。PhantomJS はヘッドレス Web ブラウザーなので、非常に高速です。さらに、html アジリティ パックと比較してはるかに優れた機能を備えています。このトピックに関する短いコースがあります。

于 2015-02-02T21:44:21.710 に答える
0

HTML を解析するために正規表現を使用するべきではありません。HTML は正規表現には複雑すぎるため、正規表現は適切なツールではありません。
HTML パーサーを使用する必要があります。
関連項目: C# HTML パーサーを探す

于 2010-02-09T13:53:43.663 に答える
0

最初の寄港地はHTML Agility Packです。

正規表現は、非 .NET 言語でこの種の入力を解析する従来の方法です。

さらに、これを XML バリアント (XHTML など) に正規化できる場合は、XPATH を使用して必要なノードをクエリおよび取得できます。

やりたくないことは、独自のパーサーを実装することです。

于 2010-02-09T13:53:54.223 に答える