我正在努力编写一个小型网络爬虫。我从一些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?
答案 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)
检查响应中的“位置”标题 - 它应包含新网址。