2013-08-29 41 views
0

我想解析在網頁中以下內容:怎麼不先保存到一個文件下載後加載頁面

<h1 class="eTitle">bla bla bla v1.0</h1> 

我想顯示「唧唧歪歪V.1.0」在我使用WPF創建的文本框。我的代碼是followind,但是當我點擊按鈕時,它在文本框中沒有顯示任何內容。

private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
      WebClient webClient = new WebClient(); 
      webClient.Encoding = Encoding.UTF8; 
      webClient.DownloadFile("http://blablabla.com", "blabla.htm"); 

     HtmlDocument htmldoc = new HtmlDocument(); 
     htmldoc.Load("blabla.htm"); 
     var titlenode = htmldoc.DocumentNode.SelectSingleNode("blabla"); 

     textbox1.Text = "" + titlenode; 
    } 
private void textbox1_TextChanged(object sender, TextChangedEventArgs e) 
    { 
    } 

其實我把頁面保存到一個.htm文件並從中讀取。我可以避免這樣做嗎?

+2

http://meta.stackexchange.com/questions/10647/how-do-i-write-一個好標題 –

回答

1

你是XPath表達式來獲取節點是不正確的。

如果你想獲得單h1節點使用該

var titlenode = htmldoc.DocumentNode.SelectSingleNode("//h1"); 

如果你想與標題eTitle節點使用該

var titlenode = htmldoc.DocumentNode.SelectSingleNode("//h1[@title = 'eTitle']"); 

獲得單h1更多看到這個page

然後,您必須訪問節點值並顯示它。

+0

如何訪問其值並顯示它? – user2729661

+0

您可以獲取值爲'InnerText'屬性的值。 –

2

爲了避免下載文件,你可以使用webClient.DownloadString("http://blablabla.com/blabla.htm");

0

爲什麼不直接使用一個HttpWebRequesthtml文件本身?

來源:Get html source of web page using HttpWebRequest class

private string getHtml(string url) 
{ 
    if(String.IsNullOrWhiteSpace(url)) { return; } 
    // Create Web Request 
    HttpWebRequest myWebRequest = (HttpWebRequest)HttpWebRequest.Create(url); 
    // Set GET method 
    myWebRequest.Method = "GET"; 
    // Get a response 
    HttpWebResponse myWebResponse = (HttpWebResponse)myWebRequest.GetResponse(); 
    // Open a Stream to read the response 
    StreamReader myWebSource = new StreamReader(myWebResponse.GetResponseStream()); 
    // Create a string to store the response 
    string myPageSource = string.Empty; 
    myPageSource= myWebSource.ReadToEnd(); 
    // Close the stream 
    myWebResponse.Close(); 
    // Return the string 
    return myPageSource; 
} 

然後使用谷歌的主頁作爲一個例子,你叫string htmlPage = getHtml("http://www.google.ca");

相關問題