我想从特定网址获取内容。 我试过这段代码:
var request = (HttpWebRequest)WebRequest.Create("https://example.com");
request.Timeout = 5000;
request.Method = "GET";
request.ContentType = "text/xml";
using (var _webResponse = (HttpWebResponse)_request.GetResponse())
{
var webResponseStatus = _webResponse.StatusCode;
var stream = _webResponse.GetResponseStream();
using (var _streamReader = new StreamReader(_stream))
{
string plainText = _streamReader.ReadToEnd();
}
}
问题是内容不相关,似乎它返回了垃圾块。 例如,这是我收到的内容的开头:
<!doctype html><html itemscope=\"\"
itemtype=\"http://schema.org/WebPage\" dir=\"rtl\"><head><meta
itemprop=\"image\"
content=\"/images/google_favicon_128.png\"><title>Google</title><script>(function(){\nwindow.google={kEI:\"JVMWU4OxMuL9ygOem4GACw\",getEI:function(a){for(var
b;a&&(!a.getAttribute||!(b=a.getAttribute(\"eid\")));)a=a.parentNode;return
b||google.kEI},https:function(){return\"https:\"==window.location.protocol},kEXPI:\"17259,4000116,4007661,4007830,4008067,4008133,4008142,4009033,4009565,4009641,4010297,4010806,4010830,4010858,4010899,4011228,4011258,4011679,4012318,4012373,40125
我想获取网页中显示的文字。 我该怎么做呢 ? 我会感谢任何帮助。 谢谢, 阿维。
答案 0 :(得分:2)
那不是垃圾。返回的文本是一堆Javascript。当页面在浏览器中加载时,浏览器会执行Javascript,它会下载一些数据并修改DOM。
如果你想要渲染的HTML,那么你可以创建一个WebBrowser组件来显示页面,然后通过该组件访问DOM,或者你可以在你的C#程序中添加一个Javascript引擎并让它解释网页。有关如何执行此操作的信息,请参阅Embedding JavaScript engine into .NET。