Я использую sgmlreader для преобразования HTML в XML. Выход идет в объект XmlDocument, который затем я могу использовать метод InnerText для извлечения простого текста с веб-сайта. Я пытаюсь заставить текст выглядеть максимально чистым, удалив любой javascript. Зацикливание через xml и удаление любого <script type="text/javascript">
достаточно просто, но я ударил кирпичную стену, когда какой-либо jquery или стиль не инкапсулирован ни в какие теги. Кто-нибудь может мне помочь?Удаление jquery и CSS из документа Xml
Пример кода:
Шаг один: После того, как я использую класс WebClient для загрузки HTML, я сохранить его, а затем открыть файл с классом чтения текста.
Шаг два: Создать класс sgmlreader и установите входной поток в тексте читатель:
// setup SGMLReader
Sgml.SgmlReader sgmlReader = new Sgml.SgmlReader();
sgmlReader.DocType = "HTML";
sgmlReader.WhitespaceHandling = WhitespaceHandling.All;
sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower;
sgmlReader.InputStream = reader;
// create document
doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.XmlResolver = null;
doc.Load(sgmlReader);
Шаг три: После того, как у меня есть XmlDocument, я использую doc.InnerText, чтобы получить мой простой текст.
Шаг четыре: можно легко удалить теги JavaScript следующим образом:
XmlNodeList nodes = document.GetElementsByTagName("text/javascript");
for (int i = nodes.Count - 1; i >= 0; i--)
{
nodes[i].ParentNode.RemoveChild(nodes[i]);
}
Некоторые вещи еще проскальзывает. Heres пример для одного вывода конкретного сайта я scriping:
Criminal and Civil Enforcement | Fraud | Office of Inspector General | U.S. Department of Health and Human Services
#fancybox-right {
right:-20px;
}
#fancybox-left {
left:-20px;
}
#fancybox-right:hover span, #fancybox-right span
#fancybox-right:hover span, #fancybox-right span {
left:auto;
right:0;
}
#fancybox-left:hover span, #fancybox-left span
#fancybox-left:hover span, #fancybox-left span {
right:auto;
left:0;
}
#fancybox-overlay {
/* background: url('/connections/images/wc-overlay.png'); */
/* background: url('/connections/images/banner.png') center center no-repeat; */
}
$(document).ready(function(){
$("a[rel=photo-show]").fancybox({
'titlePosition' : 'over',
'overlayColor' : '#000',
'overlayOpacity' : 0.9
});
$(".title-under").fancybox({
'titlePosition' : 'outside',
'overlayColor' : '#000',
'overlayOpacity' : 0.9
})
});
Это JQuery и укладка должна быть удалены.
Не могли бы вы предоставить несколько примеров типа текста/узлов/синтаксиса, который вы пытаетесь удалить? Было бы также полезно увидеть любой образец C#, который у вас есть. –
Является ли 'document.GetElementsByTagName (" text/javascript ")' правильным? Тип MIME не является именем тега. Я думаю, вы получите теги типа 'script' * и *' @ type = "text/javascript" '. –
Я тоже смущен. JQuery и CSS должны содержаться в узлах или