1

C# で Web スクレイパーを作成し、次のようにしてページ上のすべてのリンクを取得しています。

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))

}

これはインターネット上で実行されているため、リンクの形式が正しくないか、プロトコルが異なる可能性さえあります。/gohere/index.html や Potato.php などの内部リンクを、サイトの URL も含む外部リンクに変換する最良の方法は何ですか。

4

3 に答える 3

4

これは非常に簡単に実行できます。ページの取得に使用した Uri を使用して新しい Uri を作成できます。

このような:

Uri baseUri = new Uri("http://www.contoso.com");
Uri myUri = new Uri(baseUri, "catalog/shownew.htm");

Console.WriteLine(myUri.ToString());

詳細情報: http://msdn.microsoft.com/en-us/library/9hst1w91.aspx

これは相対hrefと絶対hrefの両方で機能するため、チェックする必要はありません.そのようなページで見つけたすべてのリンクを「変換」するだけです.

于 2013-05-26T17:12:37.793 に答える
0

叫び声の答えは正しいですが、私は簡単な方法を好みます:

List<string> links = new List<string>();
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
    links.Add("http://mywebsite.com"+link.InnerText);
}
于 2013-05-26T18:07:59.470 に答える