2

抽出したいWebページにソースコードがあります(ここで関連するものに正確に絞り込みました:

    <div class="sideInfoPlayer">
<a class="signLink" href="spieler.php?uid=12345" title="Profile">
    <span class="wrap">Wagamama</span>
</a>

ここでの秘訣は、ワガママという単語をメッセージボックスに入れたいのですが、その単語はそのサイトのすべてのページで変わるため、その要素を取得する必要がありますが、このページにはIDがありません。したがって、最初に「sideInfoPlayer」という名前のクラスを検索してから、前のクラスブロック内の「wrap」クラスを見つけることを考えていました。

私は最初のものを取得するために以下を書きましたが、2番目のものに取り組み、次に望ましい値を取得する方法がわかりません。

        HtmlElementCollection col = webBrowser1.Document.GetElementsByTagName("div");
        foreach (HtmlElement element in col)
        {
            string cls = element.GetAttribute("className");
            if (String.IsNullOrEmpty(cls) || !cls.Equals("sideInfoPlayer"))
                continue;
        }

私はあなたがこれで私を解き放つのを手伝ってくれることを願っています。

4

1 に答える 1

0

より良い選択肢があります。http://htmlagilitypack.codeplex.com/を見てください

そしてここに:どうすればhtml文字列を解析できますか

まず、手動またはNuGetパッケージマネージャーを使用してHtmlAgilityPackライブラリへの参照を追加する必要があります。

// loading html into HtmlDocument
var doc = new HtmlWeb().Load("http://website.com/mypage");
// walking through all nodes of interest
foreach (var node in doc.DocumentNode.SelectNodes("//div[@class='sideInfoPlayer']/span[@class='wrap']"))
{
  // here is your text: node.InnerText
}

//div[@class='sideInfoPlayer']/span[@class='wrap']これはXpath式と呼ばれ、文字通り「class=sideInfoPlayerのdiv要素の子であるclass=wrapのすべてのspan要素を取得する」という意味です。

私はそれをテストしませんでしたが、それは動作するはずです。

于 2012-11-21T13:48:26.053 に答える