2014-03-04 62 views
1

首先,我幾乎還是一個初學者,特別是當涉及網絡的東西。用C#閱讀隱藏的網站文本框?

我想從我的winforms應用程序在瀏覽器中打開的網頁中讀取文本框的內容,但我無法修改網頁本身的源代碼。可悲的是,我所尋找的字符串不是簡單地寫在頁面的源代碼中。所以我不能只是閱讀頁面源代碼並解析它。好像文本框的內容通過javascript填充。

我通常不知道從哪裏開始。任何建議都非常受歡迎。

此外,我不知道我應該在這裏放置哪些其他信息。我不知道從哪裏開始,所以我還沒有任何代碼可以顯示。

編輯:

我一直在嘗試使用敏捷包,但我仍然不知道如何去我需要什麼。這是我到目前爲止的代碼:

WebClient client = new WebClient(); 
String html = client.DownloadString(URL); 
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//div[@class='ember-view']")) 
{ 
    HtmlAttribute div = link.Attributes["div"]; 
    if (div != null) 
    { 
       outputBox.Text += div.Value; 
    } 
} 

當我運行代碼,我得到這個:

型「System.NullReferenceException」未處理的異常的發生。 附加信息:未將對象引用設置爲對象的實例。

當我去的網頁,做檢查元素我得到這個(我只抄了幾行):

<html class="no-js" lang="en"> 

<head></head> 
<body class="ember-application" lang="en-US" data-environment="production"> 
    <div id="booting" style="display: none;"></div> 
    <div id="ember2493" class="ember-view"> 
     <div id="alert" class="ember-view"></div> 

我不知道怎麼去,讓我們說,內碼這條線:

<div id="alert" class="ember-view"></div> 

而且,我道歉,如果這是一件很明顯,我很想念,但同樣,這是所有新的給我。感謝你目前的幫助。

回答

0

你知道嗎Html Agility Pack?我總是使用敏捷包進行html爬行。

HtmlDocument doc = new HtmlDocument(); 
doc.Load("file.htm"); 
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"]) 
{ 
    HtmlAttribute att = link["href"]; 
    att.Value = FixLink(att); 
} 
doc.Save("file.htm"); 
+0

謝謝,我一直在玩HAP,但還沒有幸運(見上文)。 – ibtd

0

也許沿着以下幾行可能會有所幫助?

 var inputs = webBrowser1.Document.GetElementsByTagName("input"); 
     foreach (HtmlElement input in inputs) 
     { 
      var id = input.Id; 
      var name = input.Name; 
      var val = input.OuterHtml; // can parse value from here 
     } 
+0

謝謝。一直試圖使用這一些,但迄今沒有成功。 – ibtd