2012-07-19 154 views
3

Hello开发人员我想从网站读取外部内容,如标签之间的元素。我使用的Web浏览器控件,在这里是我的代码但是这个代码只是填补与网页阅读WPF中Web浏览器的内容

public MainWindow() 
{ 
    InitializeComponent(); 

    wbMain.Navigate(new Uri("http://www.annonymous.com", UriKind.RelativeOrAbsolute)); 
} 
+0

你尝试过什么? – Clemens 2012-07-19 11:40:22

+0

我HV试图web浏览器InspectHTML的内容,但没有成功...... – user1528573 2012-07-19 11:41:36

+0

请参考下面的SO问题: http://stackoverflow.com/questions/2038104/parsing-html-to-get-content-using- c-sharp – Zadam 2012-07-19 11:44:37

回答

1

我的Web浏览器控件试试这个:

dynamic doc = wbMain.Document; 
var htmlText = doc.documentElement.InnerHtml; 

编辑:从here服用。

+3

[此答案]的副本(http://stackoverflow.com/a/5762063/1136211)。你应该更好地参考现有的答案。这里回答的问题也可能对提问者有所帮助。 – Clemens 2012-07-19 11:50:12

+0

@Clemens感谢您的领导。对于该网站来说并不陌生,但实际上正在努力贡献。 – Darajan 2012-07-19 11:54:22

+0

Ezakiel这有助于很多和Underbar“文档”显示为空。 – user1528573 2012-07-19 11:59:09

4

您可以使用Html Agility Pack库来解析任何HTML格式的数据。

HtmlDocument doc = new HtmlDocument(); 
doc.Load(wbMain.DocumentText); 

var nodes = doc.SelectNodes("//a[@href"]); 

注:SelectNode接受XPath,没有CSS或jQuery选择的方法。

var node = doc.SelectNodes("id('my_element_id')"); 
+0

每当我尝试访问节点我得到一个异常“表达式必须评估到一个节点集”。 – user1528573 2012-07-19 12:25:04

+0

你可以发布一些你正在使用的代码吗? – 2012-07-19 12:48:31

+0

var nodes = doc.DocumentNode.SelectNodes(“#text”); – user1528573 2012-07-19 12:55:32

4

当我从你的问题的理解,你只是试图解析HTML数据,而你不需要显示实际的网页。 如果比你可以采取一个非常简单的方法,并使用HttpWebRequest的情况:

var _plainText = string.Empty; 
    var _request = (HttpWebRequest)WebRequest.Create("http://www.google.com"); 
    _request.Timeout = 5000; 
    _request.Method = "GET"; 
    _request.ContentType = "text/plain"; 
    using (var _webResponse = (HttpWebResponse)_request.GetResponse()) 
    { 
     var _webResponseStatus = _webResponse.StatusCode; 
     var _stream = _webResponse.GetResponseStream(); 
     using (var _streamReader = new StreamReader(_stream)) 
     { 
      _plainText = _streamReader.ReadToEnd(); 
     } 
    }