웹 사이트에서 일부 정보를 긁어 내려고 노력하고 있지만 저에게 적합한 솔루션을 찾을 수 없습니다. 인터넷에서 읽은 모든 코드는 적어도 하나의 오류를 발생시킵니다.
홈페이지의 예제 코드조차도 오류가 발생합니다.
내 코드 :
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
가져온 네임 스페이스 중 두 개에 HtmlDocument
라는 클래스 (HTML 민첩성 팩 네임 스페이스 및 Windows Forms 네임 스페이스)가 포함되어 있기 때문에 컴파일러가 혼동을 HtmlDocument
있습니다. 명시 적으로 사용할 클래스를 지정하여이 문제를 해결할 수 있습니다.
이것이 내가 달성 한 방법입니다. foreach 행 doc.DocumentElement.SelectNodes ( "// a [@href"])의 기본 Html Agility Pack 예제 에 코드 오류가 있습니다. 정확하고 테스트 된 것은 다음과 같습니다.
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(@"http://adityabajaj.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());
그것이 나를 위해 일하고 있기 때문에 나는 공유해야한다고 생각했습니다.