通过Web浏览器元素获取文档内容

时间:2014-03-04 22:30:27

标签: c# html

我想从特定网址获取内容。 我试过这段代码:

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

我想获取网页中显示的文字。 我该怎么做呢 ? 我会感谢任何帮助。 谢谢, 阿维。

1 个答案:

答案 0 :(得分:2)

那不是垃圾。返回的文本是一堆Javascript。当页面在浏览器中加载时,浏览器会执行Javascript,它会下载一些数据并修改DOM。

如果你想要渲染的HTML,那么你可以创建一个WebBrowser组件来显示页面,然后通过该组件访问DOM,或者你可以在你的C#程序中添加一个Javascript引擎并让它解释网页。有关如何执行此操作的信息,请参阅Embedding JavaScript engine into .NET