Html 민첩성 팩으로 XPATH 작업을 할 수 없습니다.

.net c# html-agility-pack xpath

문제

나는 방화범을 사용하여 XPATH 값을 얻음으로써 Wikipedia의 "Today 's featured article"을 긁어 내려고 노력하고있다.

여기에 이미지 설명을 입력하십시오.

그리고 그것을 내 코드에 붙여 넣습니다.

string result = wc.DownloadString("http://en.wikipedia.org/wiki/Main_Page");

            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();

            doc.LoadHtml(result);

            var featuredArticle = doc.DocumentNode.SelectSingleNode("/html/body/div[3]/div[3]/div[4]/table[2]/tbody/tr/td/table/tbody/tr[2]/td/div/p");

그러나 featuredArticle은 항상 null을 반환합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

인기 답변

파이어 버그가 파이어 폭스와 같은 XPath를 보여줌으로써 Html이 만들어 졌기 때문에 서버의 Html이 아닌지도 모른다. 또한 Firebug의 경로는 절대적이며 모든 작은 변화로 인해 파기 될 수 있습니다.

더 쉬운 방법은 Html을 살펴 보는 것입니다. 찾고있는 p-Tag는 id mp-tfa 가있는 div에 있으므로 div의 XPath 모양을 쉽게 만들고 내부의 첫 번째 p를 얻는 것이 더 쉽습니다.

이렇게 :

var wc = new WebClient();
var doc = new HtmlDocument();
doc.Load(wc.OpenRead("http://en.wikipedia.org/wiki/Main_Page"));
var featuredArticle = doc.DocumentNode.SelectSingleNode("//div[@id='mp-tfa']/p");
Console.WriteLine(featuredArticle.InnerText);

XPath 사용법을 배우기에 가장 좋은 곳은 w3schools.com 입니다.

또는 Linq를 사용할 수도 있지만 XPath가 좀 더 명확하다고 느낍니다.

var wc = new WebClient();
var doc = new HtmlDocument();
doc.Load(wc.OpenRead("http://en.wikipedia.org/wiki/Main_Page"));
var featuredArticle = doc.DocumentNode.SelectSingleNode("//div[@id='mp-tfa']/p");
Console.WriteLine(featuredArticle.InnerText);



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.