如何从html节点获取文本并解决字符编码问题
本文关键字:解决 字符 编码 问题 取文本 获取 html 节点 | 更新日期: 2023-09-27 18:10:33
我想在这个网站获得innertext http://www.hurriyet.com.tr/yazarlar/22933964.asp
与htmlagilitypack。HTML结构为
<div class="detailText">
<span class="yzrArticleDate">30 Mart 2014</span>
<h1 class="yazarArticleTitle">31 Mart sabahı için acil ihtiyaç listesi</h1>
<p></p><p><p >Akıl.<br />Sağduyu.<br />Barış.<br />
Özgürlük.<br />Kardeşlik.<br />Vicdan.<br />Huzur.............
和我当前的代码
string htmlContent = getsource(s);
HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument();
document.LoadHtml(htmlContent);
var noa =document.DocumentNode.SelectSingleNode("*//div[@class='detailText']").InnerText;
的问题是它与标题和日期。我指的是"2014年3月30日"answers"2014年3月31日萨巴哈伊·帕拉西克·ihtiyaç listesi"。
我想要以
开头的部分<*p><*/p><*p><p* >Akıl.<*br "
我尝试了不同的变化
var noa =document.DocumentNode.SelectSingleNode("*//div[@class='detailText']").InnerHtml;
var noa = document.DocumentNode.SelectSingleNode("*//div[@class='detailText']").NextSibling.NextSibling.InnerText;
var noa = document.DocumentNode.SelectSingleNode("*//div[@class='detailText']").LastSibling.InnerText;
第二个问题;如果我设法文本这个文本,我将面临一个字符编码问题,我怎么能解决这个
最简单的解决方案是删除您不想要的节点,然后获得InnerHtml
/InnerText
,如从htmldocument: htmllagilitypack中删除html节点所述。
var noa =document.DocumentNode.SelectSingleNode("*//div[@class='detailText']")
noa.RemoveChild(noa.SelectSingleNode("span"));
// remove the rest too...
var result = noa.InnerText;
应该没有编码问题,除非站点报告编码无效,因为c#字符串是Unicode (UTF16)。