Получение мета-тегов и комментариев с помощью HTML Agility Pack - PullRequest
3 голосов
/ 01 марта 2010

Я искал учебные пособия по использованию 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, поэтому любая помощь с этим была бы хороша.

Любая помощь будет высоко ценится.

1 Ответ

10 голосов
/ 02 марта 2010

HtmlDocument HtmlAgilityPack реализует IXpathNavigable , таким образом, он использует стандартный движок .NET XPath.Будет применима любая документация XPath 1.0, особенно если речь идет о System.Xml.XPath.

"// comment ()" находит все комментарии
"// meta" находит все элементы "meta"

HtmlDocument был очень похож на XmlDocument , поэтому примеры и руководства по нему будут несколько применимы.

Некоторые ссылки MSDN:

...