2016-09-17 53 views
0

我與this question詢問過的人有同樣的情況。我需要從保存爲字符串的網站獲取一些數據。這裏從WebBrowser中打開的網站獲取數據

我的問題是,該網站我需要保存數據從,要求用戶先登錄查看數據...

所以在這裏我的計劃是使用戶進入網站使用WebBrowser,然後登錄,當用戶在正確的頁面上時,單擊一個將自動保存數據的按鈕。

我想使用一個類似的方法來使用,在另一個問題,我在開始鏈接到頂部答案。

string data = doc.DocumentNode.SelectNodes("//*[@id=\"main\"]/div[3]/div/div[2]/div[1]/div[1]/div/div/div[2]/a/span[1]")[0].InnerText; 

我試圖做這樣的事情:

string data = webBrowser1.DocumentNode.SelectNodes("//*[@id=\"main\"]/div[3]/div/div[2]/div[1]/div[1]/div/div/div[2]/a/span[1]")[0].InnerText; 

但你不能做「webBrowser1.DocumentNode.SelectNodes」

我也看到,對其他問題的答案說,他使用HtmlAgilityPack,但我試圖下載它,並且我不知道該怎麼處理它。

不是最好的C#,所以請不要評論太複雜的答案。或者至少試着讓它可以理解。

感謝提前:)

+0

您需要對登錄頁面執行POST操作,閱讀獲取cookie信息的響應,並將Cookie /登錄信息包含在任何進一步的GET請求中。你有沒有嘗試過:http://stackoverflow.com/questions/24845573/using-c-sharp-httpclient-to-login-on-a-website-and-scrape-in​​formation-from-anoth –

+0

這聽起來太複雜了。 .. – Mldx

+0

這不是 - 只有兩個方法,一旦你得到登錄例程制定出來。根據您想要處理的信息,這裏有幾個更高級別的解決方案。我記得使用過WebReplay - 不知道它們是否還在。 –

回答

1

這裏是HtmlAgilityPack使用的例子:

public string GetData(string htmlContent) 
{ 
     HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); 
     htmlDoc.OptionFixNestedTags = true; 
     htmlDoc.LoadHtml(htmlContent); 
     if (htmlDoc.DocumentNode != null) 
     { 
      string data = htmlDoc.DocumentNode.SelectNodes("//*[@id=\"main\"]/div[3]/div/div[2]/div[1]/div[1]/div/div/div[2]/a/span[1]")[0].InnerText; 
      if(!string.IsNullOrEmpty(data)) 
      return data; 
     } 
     return null; 
} 

編輯:如果你想模仿瀏覽器的一些動作,我建議你使用Selenium代替的普通WebBrowser控件。這裏是下載它的鏈接:http://www.seleniumhq.org/或使用NuGet下載它。這是如何使用它的好問題:How do I use Selenium in C#?

+0

謝謝,此工作可以獲取數據,我只需要花一兩分鐘的時間來弄清楚如何安裝HtmlAgilityPack。對於將來可能會讀到的人,可以在Visual Studio中找到(項目>管理NuGet包)... 但是,如果我想讓程序自動輸入用戶名和密碼,我該怎麼辦?並按登錄? 當程序啓動時,webbrowser定位到登錄頁面,然後它應該自動登錄,然後使用您剛寫入的代碼來獲取數據。 再一次,謝謝你幫助我試圖讓這個工作! :) – Mldx

+0

您所做的修改回答了我的問題。謝謝:) – Mldx

+0

@Mldx不客氣) –