私はウェブサイトからいくつかの情報を削り取ろうとしていますが、私のために働く解決策を見つけることはできません。私がインターネットで読んだすべてのコードは、私にとって少なくとも1つのエラーを生成します。
ホームページのサンプルコードでさえ、私のためにエラーが発生します。
私のコード:
HtmlDocument doc = new HtmlDocument();
doc.Load("https://www.flashback.org/u479804");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
HtmlAttribute att = link["href"];
att.Value = FixLink(att);
}
doc.Save("file.htm");
次のエラーを生成します。
'HtmlDocument'は 'System.Windows.Forms.HtmlDocument'と 'HtmlAgilityPack.HtmlDocument' C:* \ Form1.csのあいまいな参照です
編集:私のコードはすべてここにあります: http : //beta.yapaste.com/55
すべてのヘルプは非常に高く評価されています!
HtmlAgilityPack.HtmlDocument
使用:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
using
てインポートした名前空間のうち2つに、 HtmlDocument
という名前のクラス(HTMLアジリティパック名前空間およびWindowsフォーム名前空間)が含まれているため、コンパイラが混乱しusing
います。これを回避するには、明示的に使用するクラスを指定します。
これは私が達成した方法です。 foreachの行doc.DocumentElement.SelectNodes( "// a [@href"])に、メインのHtml Agility Packの例で示されているコードエラーがあることに注意してください。正しいものとテストされたものを以下に示します。
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(@"http://tipscow.com");
StringBuilder sb = new StringBuilder();
List<string> lstHref = new List<string>();
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]").Distinct())
{
string curHref = link.Attributes["href"].Value;
if(!lstHref.Contains(curHref))
lstHref.Add(curHref);
}
foreach (string str in lstHref)
{
sb.Append(str +"<br />");
}
Response.Write (sb.ToString());
それは私のために働いて以来、私は共有する必要があると思った。