2011-03-17 45 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。