1
我使用sgmlreader將HTML轉換爲XML。輸出進入一個XmlDocument對象,然後我可以使用InnerText方法從網站中提取純文本。我試圖通過刪除任何javascript來讓文本看起來儘可能乾淨。通過xml循環並刪除任何<script type="text/javascript">
很容易,但是當任何jquery或樣式沒有封裝在任何標籤中時,我碰到了一堵磚牆。有人可以幫我嗎?從Xml文檔中刪除jQuery和CSS
示例代碼:
步驟一: 一旦我使用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]);
}
有些東西還是滑過。下面是一個特定的網站輸出示例我正在寫作:
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應該包含在節點或