2

当我使用 HTML Agility Pack 抓取 H3 标记的 InnerText 时,与源代码相比,我拾取了额外的字符 (Â)。

我不确定这些字符来自哪里或如何删除它们。

提取字符串:

 Week 1

HTML 源代码:

<h3>
<span> </span>Week 1</h3>

当前代码:

private void getWeekNumber(string url)
{
    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

    htmlDoc.Load(new System.IO.StringReader(url));

    foreach (HtmlAgilityPack.HtmlNode h3 in htmlDoc.DocumentNode.SelectNodes("//h3"))
    {
        MessageBox.Show(h3.InnerText);
    }
}

当前的解决方法(从stackoverflow上的某个地方被盗,丢失了链接):

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

request.Method = "GET";

using (var stream = request.GetResponse().GetResponseStream())
using (var reader = new System.IO.StreamReader(stream, Encoding.UTF8))
{
    result = reader.ReadToEnd();
}

HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

htmlDoc.Load(new System.IO.StringReader(result));

foreach (HtmlAgilityPack.HtmlNode h3 in htmlDoc.DocumentNode.SelectNodes("//h3"))
{
    MessageBox.Show(h3.InnerText);
}
4

2 回答 2

4

您需要先设置编码,然后再执行...

htmlDoc.Load(new System.IO.StringReader(url), Encoding.UTF8);

这告诉敏捷包字符是 UTF8 而不是其他编码。

您需要在此处执行此操作的原因是,这是解析错误的关键。在此之后,您将存储文字 Â 字符。

在从 Internet 下载 HTML 后更改的字符串中的字符也可能很有趣。

于 2012-07-19T14:57:19.633 回答
1

可能是你的字符编码,设置编码为 UTF-8

于 2012-07-19T14:24:47.193 回答