我希望使用WebRequest类获得纯文本,就像我们使用webbrowser1.Document.Body.InnerText时得到的一样。我尝试了以下代码
public string request_Resource()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl);
Stream stream = request.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(stream);
WebBrowser wb = new WebBrowser();
wb.DocumentText = sr.ReadToEnd();
return wb.Document.Body.InnerText;
}当我执行时,这是一个NullReferenceException。
有没有更好的方法来获得纯文本。
注意:我不能直接使用webbrowser控件来加载网页,因为我不想处理所有那些在加载页面时多次触发的事件。
更新:我已经将代码更改为使用WebClient类而不是WebRequest,根据建议,我的代码现在看起来类似于
public string request_Resource()
{
WebClient wc = new WebClient();
wc.Proxy = null;
//The user agent header is added to avoid any possible errors
wc.Headers.Add("user-agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729; .NET4.0C)");
return wc.DownloadString(myurl);
}我正在考虑使用HTML,有人能提出更好的选择吗.
发布于 2010-11-25 18:38:45
您正在寻找HTML敏捷包,它可以在不使用IE的情况下解析HTML。
它有一个InnerText属性。
要回答您的问题,您需要等待浏览器解析文本。
顺便说一句,您应该使用WebClient类而不是WebRequest。
发布于 2010-11-25 18:55:03
使用webclient:
public string request_Resource()
{
WebClient wc = new WebClient();
byte[] data = wc.DownloadData(myuri);
return Encoding.UTF8.GetString(data);
}这将给你网站的内容。然后可以使用HtmlAgilityPack解析结果。
发布于 2010-11-25 19:12:58
如果您只需要简单的HTML文本,那么您已经编写了这段代码。
public string request_Resource()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl);
Stream stream = request.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(stream);
return sr.ReadToEnd();
}https://stackoverflow.com/questions/4279989
复制相似问题