質問者
C#でWebページにアクセスする方法を教えてください。

質問
-
いつもお世話になります。
C#でWebページにアクセスする方法を教えてください。
かなり深いのですが、次のような構造のWebページにアクセスしようとしています。
usernameが、すでに存在する文字列「半沢直樹」の場合の、commentを抜き出そうとしています。<html>
<body>
<div>
<div>
<div>
<div class="main">
<div>
<h5 >
<div >
<a href="username.html">username</a>
</div>
</h5>
<form>
<div>
<span>
<span>
<a href="comment" data-reactid="">comment</a>
</span>
</span>
</span>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>じっさいのページは、いちばん外側の<div>~</div>を複数もっています。
<html>
<body>
<div>
<div>
<div>
<div class="main">
<div>
<h5 >
<div >
<a href="username.html">半沢直樹</a>
</div>
</h5>
<form>
<div>
<span>
<span>
<a href="comment" data-reactid=".r[qyi9]">倍返しだ</a>
</span>
</span>
</span>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div>
<div>
<div>
<div class="main">
<div>
<h5 >
<div >
<a href="username.html">浅野支店長</a>
</div>
</h5>
<form>
<div>
<span>
<span>
<a href="comment" data-reactid=".r[quep7]">君の責任だ</a>
</span>
</span>
</span>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
</html>現在、DocumentCompletedイベントで、
HtmlElementCollection collections = webBrowser.Document.GetElementsByTagName("div");
foreach (HtmlElement collection in collections) {
//ここをどう書くか知りたい。
string outerhtml = collection.OuterHtml;
if (outerhtml.Contains("半沢直樹"))
MessageBox.Show(outerhtml);
}として抜き出しています。
これで抜き出せているといえばいえるのですが、ご覧のようにdivの構造が深いため、同じキーワードを何度も抜き出してしまっています。
いちど、
HtmlElementCollection collections = webBrowser.Document.GetElementsByTagName("div");
foreach (HtmlElement collection in collections) {
HtmlElementCollection subcollections = collection.GetElementsByTagName("div");
}
のように、階層をたどって子項目を取得できれば、とも思ったのですが、そのようなことができるのかどうかわかりません。
インテリセンスではだめみたいでした。
このような場合、どのように取り扱ったらよいのかをご教示ください。