HTML 민첩성 팩을 사용하여 메타 태그 및 주석 가져 오기

.net c# html-agility-pack html-parsing

문제

HTML Agility Pack을 사용하는 방법에 대한 자습서를 찾았지만 원하는 모든 작업을 수행하는 것처럼 보입니다.하지만 인터넷에서 이와 같은 강력한 도구를 사용하면 소리가 거의 들지 않습니다.

난 이름을 기반으로 주어진 태그를 검색 할 간단한 방법을 쓰고 있어요 :

public string[] GetTagsByName(string TagName, string Source) {
    ...
}

이것은 정규식을 사용하여 쉽게 할 수 있지만 HTML을 파싱하기 위해 정규식을 사용하는 것이 옳지 않다는 것을 모두 알고 있습니다. 지금까지 다음 코드가 있습니다.

...
// TODO: Clear Comments (can this be done or should I use RegEx?)
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(Source);
ArrayList tags = new ArrayList();
string xpath = "//" + TagName;
foreach (HtmlTextNode node in doc.DocumentNode.SelectNodes(xpath) {
    tags.Add(node.Text);
}
return (string[])tags.ToArray(typeof(String));

먼저 HTML에서 모든 주석을 제거하고 그 이름을 기반으로 올바른 태그를 반환 할 수 있기를 원합니다. 가능한 경우 로봇과 같은 속성을 기반으로 특정 메타 태그를 반환하고 싶습니다. 나는 xpath와 함께 위대하지 않아서, 어떤 도움이 좋을 것이다.

어떤 도움이라도 대단히 감사 할 것입니다.

수락 된 답변

HtmlAgilityPack의 HtmlDocument는 IXpathNavigable을 구현하므로 표준 .NET XPath 엔진을 사용합니다. XPath 1.0 문서는 특히 System.Xml.XPath에 대해 언급 할 경우 적용 가능합니다.

"// comment ()"는 모든 주석을 찾습니다.
"// 메타"는 모든 "메타"요소를 찾습니다.

HtmlDocument는 XmlDocument 와 매우 비슷하게 디자인되었으므로 이에 대한 예제와 튜토리얼이 어느 정도 적용될 수 있습니다.

일부 MSDN 링크 :



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