【问题标题】:C# WebRequest with php redirecting page带有 php 重定向页面的 C# WebRequest
【发布时间】:2011-07-17 01:34:11
【问题描述】:

我正在尝试编写一个小型网络爬虫。我从一些 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 重定向,所以流总是空的。我如何获取到 php 正在重定向的页面的 URI?

【问题讨论】:

标签: c# php url redirect webrequest


【解决方案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 块中执行获取响应流部分。我的 exp 它抛出了很多 WebExceptions。

由于您正在试验这项技术,请确保您使用正确的编码读取数据。如果您尝试在不使用 Unicode 的情况下从日本网站获取数据,则数据将无效。

【讨论】:

    【解决方案2】:

    检查响应中的“Location”标头 - 它应该包含新 URL。

    【讨论】:

      猜你喜欢
      • 2012-08-12
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多