C# 如何在C中从WebRequest类的响应中获取明文#
我想使用WebRequest类获取纯文本,就像使用C# 如何在C中从WebRequest类的响应中获取明文#,c#,html,httpwebrequest,webrequest,plaintext,C#,Html,Httpwebrequest,Webrequest,Plaintext,我想使用WebRequest类获取纯文本,就像使用webbrowser1.Document.Body.InnerText时一样。我尝试了以下代码 public string request_Resource() { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl); Stream stream = request.GetResponse().GetResponseStream(); StreamR
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实用程序包,有人能推荐更好的替代方案吗。您正在寻找的,它可以在不使用IE的情况下解析HTML。
它有一个InnerText
属性
要回答您的问题,您需要等待浏览器解析文本
顺便说一下,您应该使用WebClient
类,而不是WebRequest
使用WebClient:
public string request_Resource()
{
WebClient wc = new WebClient();
byte[] data = wc.DownloadData(myuri);
return Encoding.UTF8.GetString(data);
}
这将为您提供网站的内容。然后可以使用HtmlAgilityPack解析结果 如果您只需要纯HTML文本,那么您已经编写了该代码
public string request_Resource()
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myurl);
Stream stream = request.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(stream);
return sr.ReadToEnd();
}
感谢您提供的HTML敏捷包,我将检查@SLaks的建议,我已经检查了HTML实用程序包,任何人都可以建议一个不使用第三方库的简单解决方案。谢谢你检查这个答案使用HTML敏捷包-谢谢大家的HTML实用程序包的建议,我一定会考虑它,但在这样做之前,任何人可以建议任何其他方式来做到这一点。来到Webclient类,我已经更改了代码。我清楚地提到我需要纯文本,我从来没有提到纯html。无论如何,谢谢你