C# 我正在使用我的程序从印度nseindia网站下载链接,但现在我无法下载,出现错误403?
我正在使用我的程序从nseindia网站下载一个文件,但现在出现了一个错误,未找到禁止页面。使用此代码的同一站点的值C# 我正在使用我的程序从印度nseindia网站下载链接,但现在我无法下载,出现错误403?,c#,.net,C#,.net,我正在使用我的程序从nseindia网站下载一个文件,但现在出现了一个错误,未找到禁止页面。使用此代码的同一站点的值 WebClient client = new WebClient(); client.Headers.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"); Stream data; try { data = client.OpenRead(
WebClient client = new WebClient();
client.Headers.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
Stream data;
try
{
data = client.OpenRead("http://www.nseindia.com/");
}
catch (Exception e)
{
MessageBox.Show("Error: " + e.Message + e.Data + e.HelpLink);
return "";
}
StreamReader reader = new StreamReader(data);
string s = null;
int count = 0;
while (reader.Read()>0)
{
s = reader.ReadLine();
if (s.Contains("<td class=\"t1\">"))
{
MessageBox.Show("Line: " + s);
s= s.Remove(0, 18);
s = s.Remove(s.Length - 5);
count++;
if (count == 5)
break;
}
}
data.Close();
reader.Close();
return s;
从技术上讲,您得到的是: 在简单的语言中,它表示您无权访问此资源
检查您的域是否阻止对此站点的请求。只需尝试在浏览器中打开它,看看它是否可以正常打开。此站点似乎需要一个Accept HTTP请求头:
client.Headers[HttpRequestHeader.Accept] = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
您当前所做的工作中会遇到的一个问题是,您完全依赖于您试图刮取的站点的工作方式。更不用说HTML解析代码的脆弱性了。更糟糕的是,这种情况随时可能发生变化,除非你拥有网站,否则你无法控制。明天,站点可能开始需要其他HTTP头,您的代码将再次停止工作。说这些只是为了让你做好准备
也许你可以联系网站所有者,看看他们是否提供官方API来使用他们的内容。看起来NSE做了一些更改,现在你需要使用以下两个标题: client.Headers[HttpRequestHeader.Accept]=text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
client.Headers.Adduser-agent,Mozilla/5.0 Windows NT 6.1;WOW64 AppleWebKit/537.31 KHTML,如Gecko Chrome/26.0.1410.64 Safari/537.31 嗯。但是我以前在同一个网站上用我的程序做过。我可以直接访问这个网站。