如何使用C#下载具有正确编码的HTML页面?

时间:2011-02-24 09:55:47

标签: c# encoding screen-scraping

我需要一个获取页面链接并返回此页面标题的方法。

我使用了WebClient -

        var webClient = new WebClient();
        var htmlString = webClient.DownloadString(_link);

它运作良好,但它失败了外语编码。我得到问号和奇怪的字符而不是我需要的文字。

是否有通用的方法来识别页面的编码并使用它?我需要它来支持大多数编码,如果不是全部的话。

2 个答案:

答案 0 :(得分:10)

使用HtmlAgilityPack你可以做这样的事情

using (WebClient client = new WebClient())
using (var read = client.OpenRead("http://your.com"))
{
    HtmlDocument doc = new HtmlDocument();
    doc.Load(read, true); // true = get encoding from byte order masks
    // process doc, extract title
    var title = doc.DocumentNode.SelectSingleNode("//title").InnerText;
}

答案 1 :(得分:0)

using System;
using System.IO;
using System.Net;
using System.Text;

...

    public static void GetFile
            (
            string strURL,
            string strFilePath
            )
        {

            WebRequest myWebRequest = WebRequest.Create(strURL); 

            WebResponse myWebResponse = myWebRequest.GetResponse(); 

            Stream ReceiveStream = myWebResponse.GetResponseStream();

            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

            StreamReader readStream = new StreamReader( ReceiveStream, encode );

            string strResponse=readStream.ReadToEnd();

            StreamWriter oSw=new StreamWriter(strFilePath);

            oSw.WriteLine(strResponse);

            oSw.Close();

            readStream.Close();

            myWebResponse.Close();

        }