2014-03-04 74 views
-1

我想从特定URL获取内容。 我试过这段代码:通过网络浏览器元素获取文档内容

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,4,4,40125 

我想这显示在网页上的文字。 我该怎么做? 我会很感激任何帮助。 谢谢, Avi。

回答

2

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

如果您想要呈现的HTML,那么您可以创建一个WebBrowser组件来显示页面,然后通过该组件访问DOM,或者可以将JavaScript引擎添加到C#程序并让它解释网页。有关如何做到这一点的信息,请参阅Embedding JavaScript engine into .NET

+0

什么是最简单有效的方法呢? 直接获取HTML代码是不可能的? 谢谢。 – user3381113

+0

我知道是什么问题。 问题是Facebook不支持C#中的Web浏览器元素,这就是为什么我无法从Facebook页面获取conent。 从另一个网页,如谷歌我可以获取任何我想要的文字。 看来,我不需要任何JS来HTML转换,但找到一种方法来专门从Facebook获取内容。 再次感谢你, Avi。 – user3381113

+0

您通过调用Facebook API从Facebook获取内容。见https://developers.facebook.com/docs/reference/apis/ –