2014-09-04 72 views
-1

我無法下載頁面內容並將其保存爲文件名或字符串變量。 但我可以在鉻看頁面源。有什麼方法可以獲取網頁查看源內容?

是否有無論如何喲下載或以某種方式得到pageview來源?

例如,這是一個網站的電子情報來源:查看源代碼:http://www.one.co.il/ 但它查看源代碼

開始,如果我這樣做IM的一個越來越禁止異常(403)

using (var webClient = new WebClient()) 
      { 
       data = webClient.DownloadString("httP://www.one.co.il"); 
       //webClient.DownloadFile("http://www.one.co.il", @"c:\temp\tempppp.html"); 
      } 

所以我想是這樣:

數據= webClient.DownloadString( 「視圖源:http://www.one.co.il」);

但是,這給了我例外,我猜視角源是不好的參數。

是否有無論如何每X分鐘獲取視圖源內容(如刷新和獲得每X分鐘)?

+6

對於瀏覽器,HTTP和HTML如何工作,您似乎有一些重大的誤解。 Web請求本身會返回純HTML。瀏覽器解釋它並將其顯示爲圖形用戶界面。 「查看源」選項只會再次顯示原始的純HTML。當你使用例如一個簡單的請求'HttpWebRequest',你會得到相同的純HTML。 'view-source:XXX'是瀏覽器的一個功能,而不是HTTP或URI(實際上,它顯然是無效的URI)。當然,瀏覽器可能比你看到的要多得多 - 認證,例如:) – Luaan 2014-09-04 11:20:08

+0

這可能是目標網站拒絕連接,除非特定的頭文件被設置爲「允許」(由他們)的值。例如,* some *網站需要設置用戶代理。使用像[Fiddler](http://www.fiddlerool.com)這樣的工具來比較本地友好網頁瀏覽器和您的應用程序的請求,並嘗試更好地表示網絡瀏覽器的行爲... – 2014-09-04 11:20:12

+0

It也可能是您在阻止此請求的代理後面。你的代碼在這裏運行良好。 – 2014-09-04 12:27:21

回答

0

是的,它可能被稱爲瀏覽器自動化。

有幾種很好的方法可以做到這一點。我個人比較喜歡Selenium。

var defaultamount = 10; 
var url = "http://www.one.co.il"; 
string Result; 
using (var driver = new FirefoxDriver()) 
{ 
    driver.Manage().Timeouts().ImplicitlyWait(defaultamount); 
    _wait = new WebDriverWait(driver, defaultamount); 
    driver.Navigate().GoToUrl(url); 
    Result = driver.PageSource; 
} 

這意味着你將加載的內容,但最多等待10秒。或者,你可以等待Javascript DOM被加載或者你基本上想要的東西。由於支持ajax的網頁內容,決定是否加載您想要的內容並不容易。

請注意,如果您不希望關閉它,也可以在視覺上打開網絡瀏覽器。

+0

您可能感興趣的另一種方式是您可以在窗體中託管的webbrowser控件(注意它基於Internet Explorer)。 – Margus 2014-09-04 12:18:58

+0

爲什麼要使用這種複雜的方式來獲取頁面源代碼? OP的問題中的實際代碼有什麼問題? – 2014-09-04 12:27:56

+0

@PatrickHofman它只是** driver.Navigate()。GoToUrl(url);結果= driver.PageSource; **其他代碼只是語法糖。剛纔展示瞭如何實例化一個等待驅動程序,因爲問題就是這個。 – Margus 2014-09-04 13:05:34

相關問題