可以';t通过HttpWebRequest获取HTML代码
本文关键字:HttpWebRequest 获取 HTML 代码 通过 可以 | 更新日期: 2023-09-27 17:58:47
我正在尝试解析页面的HTML代码http://odds.bestbetting.com/horse-racing/today以便具有种族列表等。问题是我无法检索页面的HTML代码。以下是函数的C#代码:
public static string Http(string url) {
Uri myUri = new Uri(url);
// Create a 'HttpWebRequest' object for the specified url.
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(myUri);
myHttpWebRequest.AllowAutoRedirect = true;
// Send the request and wait for response.
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
var stream = myHttpWebResponse.GetResponseStream();
var reader = new StreamReader(stream);
var html = reader.ReadToEnd();
// Release resources of response object.
myHttpWebResponse.Close();
return html;
}
当我执行调用函数的程序时,它会在上引发异常
HttpWebResponse myHttpWebResponse=(HttpWebResponse)myHttpWebRequest.GetResponse();
即:
无法处理从HTTP/HTTPS协议到其他不同协议的重定向。
我读过这个问题,但似乎没有同样的问题。我也试过用fiddler嗅探流量,但看不到任何重定向或类似的东西。我刚刚提取了这两个可能的重定向:odds.bestbetting.com/hors-racing/2011-06/10/byCourse和odds.bestbetting.com/horse-racing/2011-06/byTime,但查询它们会产生与上述相同的结果。
这不是我第一次做这样的事,但我真的很失落。有什么帮助吗?
谢谢!
我终于找到了解决方案。。。这实际上是头的问题,特别是用户代理的问题。
经过多次搜索,我发现一个人在同一个网站上和我有同样的问题。尽管他的代码不同,但重要的是他手动将请求的UserAgent属性设置为浏览器的UserAgent。我想我以前也这样做过,但我可能做得很糟糕。。。很抱歉
如果任何人感兴趣,最后的代码是:
public static string Http(string url) {
if (url.Length > 0)
{
Uri myUri = new Uri(url);
// Create a 'HttpWebRequest' object for the specified url.
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(myUri);
// Set the user agent as if we were a web browser
myHttpWebRequest.UserAgent = @"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4";
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
var stream = myHttpWebResponse.GetResponseStream();
var reader = new StreamReader(stream);
var html = reader.ReadToEnd();
// Release resources of response object.
myHttpWebResponse.Close();
return html;
}
else { return "NO URL"; }
}
非常感谢你的帮助。
您的问题可能有十几个原因。
其中之一是来自服务器的重定向指向FTP站点或类似的站点。
也可能是服务器在请求中需要一些标头,而您未能提供这些标头。
检查浏览器将发送到网站的内容并尝试复制。