使用php重定向页面的C#WebRequest

时间:2011-03-17 01:11:21

标签: c# php url redirect webrequest

我正在努力编写一个小型网络爬虫。我从一些HTML解析出一个url,有时我会得到一个php重定向页面。我正在寻找一种方法来获取重定向页面的uri。

我正在尝试使用System.Net.WebRequest来使用像这样的代码获取流

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

问题是链接是PHP重定向,因此流始终为null。如何获取php重定向页面的URI?

2 个答案:

答案 0 :(得分: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;如果这是你想要的效果。 AutomaticDecompression将自动解压缩压缩的响应。您还应该在try catch块中执行get response stream部分。我的exp它会抛出很多WebExceptions。

由于您正在尝试使用此技术,因此请确保使用正确的编码读取数据。如果您尝试从日语站点获取数据而不使用Unicode,则数据将无效。

答案 1 :(得分:0)

检查响应中的“位置”标题 - 它应包含新网址。