ページ内の特定のリンクを取得するためにHTMLドキュメントを解析しようとしています。私はこれが最善の方法ではないかもしれないことは知っていますが、私はその内部のテキストによって必要とされるHTMLノードを見つけようとしています。ただし、HTMLには、フッターとナビゲーションバーの2つのインスタンスがあります。ナビゲーションバーからリンクが必要です。 HTMLの「フッター」が最初に来ます。私のコードは次のとおりです:html doc C#で特定のリンクを検索するHTMLアジリティパックを使用する
public string findCollegeURL(string catalog, string college)
{
//Find college
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(catalog);
var root = doc.DocumentNode;
var htmlNodes = root.DescendantsAndSelf();
// Search through fetched html nodes for relevant information
int counter = 0;
foreach (HtmlNode node in htmlNodes) {
string linkName = node.InnerText;
if (linkName == colleges[college] && counter == 0)
{
counter++;
continue;
}
else if(linkName == colleges[college] && counter == 1)
{
string targetURL = node.Attributes["href"].Value; //"found it!"; //
return targetURL;
}/* */
}
return "DID NOT WORK";
}
プログラムはif elseステートメントに入りますが、リンクを取得しようとするとNullReferenceExceptionが発生します。 なぜですか?必要なリンクを取得するにはどうすればよいですか?ここで
は、私がアクセスしようとしているHTMLドキュメント内のコードです:
<tr class>
<td id="acalog-navigation">
<div class="n2_links" id="gateway-nav-current">...</div>
<div class="n2_links">...</div>
<div class="n2_links">...</div>
<div class="n2_links">...</div>
<div class="n2_links">...</div>
<a href="/content.php?catoid=10&navoid=1210" class"navbar" tabindex="119">College of Science</a> ==$0
</div>
これは私が欲しいのリンクです:/content.php?catoid=10 & navoid = 1210
のLINQのバージョンを選択します。 'HtmlNode'に 'SelectSingleNode'の定義が含まれていません –
@AndreaS。どのバージョンを使用していますか?あなたの環境は何ですか? –
私はVisual Studio 2015 –