2011-03-17 30 views
0

我在嘗試編寫一個小型網頁爬蟲。我從一些html解析出一個url,有時我得到一個php重定向頁面。我正在尋找一種獲取重定向頁面的URI的方法。用PHP重定向頁面的C#WebRequest頁面

我試圖用System.Net.WebRequest得到這樣

 WebRequest req = WebRequest.Create(link); 
     Stream s = req.GetResponse().GetResponseStream(); 
     StreamReader st = new StreamReader(WebRequest.Create(link).GetResponse().GetResponseStream()); 

的問題是,該鏈接是一個PHP重定向一個流使用的代碼,所以流始終爲空。我將如何獲得PHP重定向頁面的URI?

+0

是不是返回一個HTTP 302?如果是這樣,應該有一個響應標題指示新的位置。查看http://stackoverflow.com/questions/1391373/how-do-i-check-for-a-302-response-webrequest獲取更多信息。 – Tejs 2011-03-17 01:13:34

回答

1
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(link); 
    req.AllowAutoRedirect = true; 
    reg.AutomaticDecompression = DecompressionMethods.GZip; 

    StreamReader _st = new StreamReader(_req.GetResponseStream(), System.Text.Encoding.GetEncoding(req.CharacterSet)); 

AllowAutoRedirect會自動帶你到新的URI;如果那是你想要的效果。自動解壓縮將自動解壓縮壓縮的響應。你也應該在try catch塊中執行get response stream部分。我的exp它拋出了很多WebExceptions。

由於您正在嘗試使用此技術,因此請確保您使用正確的編碼讀取數據。如果您嘗試從不使用Unicode的日本站點獲取數據,則數據將無效。

0

檢查響應中的「位置」標題 - 它應該包含新的URL。