2013-08-29 2 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- a-good-title –

ответ

1

Вы являетесь выражением XPath, чтобы получить узел неправильно.

Если вы хотите, чтобы получить одноразовое использование h1 узла это

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

Если вы хотите, чтобы получить единый h1 с заголовком eTitle использованием узла это

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

Для более увидеть это page.

Затем вам нужно получить доступ к значению узла и отобразить его.

+0

Как я могу получить доступ к его значению и отобразить его? – user2729661

+0

Вы можете получить значение, считывающее свойство 'InnerText'. –

2

Чтобы избежать загрузки файла, вы можете использовать webClient.DownloadString("http://blablabla.com/blabla.htm");

0

Почему бы просто не использовать HttpWebRequest тянуть сам html файл?

Источник: 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; 
} 

Затем, используя домашнюю страницу Google в качестве примера, вы звоните string htmlPage = getHtml("http://www.google.ca");

Смежные вопросы