2012-10-23 215 views
2

我想從一個特定的網頁得到HTML代碼,但是當我做它用如何從網頁獲取HTML代碼?

 HttpWebRequest request; 
     HttpWebResponse response; 
     StreamReader streamReader; 
     request = (HttpWebRequest)WebRequest.Create(pageURL); 
     response = (HttpWebResponse)request.GetResponse(); 
     streamReader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("windows-1251")); 
     htmlCode = streamReader.ReadToEnd(); 
     streamReader.Close(); 

,或者使用Web客戶端,我重定向到登錄頁面,我得到它的代碼。 是否有任何其他方式獲取HTML代碼?

我在這裏閱讀了一些信息:How to get HTML from a current request, in a postback,但不明白我應該怎麼做,或者如何以及在哪裏指定URL。

產品號: 我在瀏覽器中登錄。 Notepad ++通過「右鍵單擊 - 查看源代碼」完美獲取我需要的內容。

謝謝。

+1

聽起來像頁面期望您在登錄會話中訪問該頁面。您必須首先模仿登錄才能獲得會話(最有可能的Cookie - 使用CookieContainer),然後訪問該頁面。 – Quintium

回答

2

如果您被重定向到登錄頁面,那麼您可能必須先登錄才能獲取內容。

因此,您需要使用合適的憑據向登錄頁面發出請求。獲取任何令牌發送(通常以cookie的形式)以維護登錄。然後請求您想要的頁面(發送帶請求的cookie)。

或者(這是首選方法),期望自動化系統與它們交互的大多數主要站點都提供了API(通常使用OAuth進行身份驗證)。查閱他們的文檔以查看他們的API如何工作。

1

如果您想要訪問的頁面在登錄屏幕後面 - 您將需要通過代碼執行登錄機制。並添加一個關聯的CookieCollection來保存該網站將嘗試放在您的請求上的登錄Cookie。

另外,如果你有一個可以幫助程序的用戶,你可以嘗試列出他們通過他們的瀏覽器登錄後的網站的cookies。將該cookie複製並添加到CookieCollection中。

乾杯 西蒙

0

如果你想放棄,需要autentication一個HTML頁面,我建議你使用Watin 填寫適當的領域,然後導航至您想要下載的網頁。 也許iot看起來有點過分,但它會在以後節省很多麻煩。