从网站下载数据时遇到问题
Trouble with downloading data from web site
基本上我没有下载网页的经验,我试图获得这个包含每日股票交易价格的页面,但运气不好。我不确定是我在这里做错了什么,还是网络服务器不允许这种请求。网站适用于 chrome 或 IE。
using (WebClient client = new WebClient())
{
byte[] response = client.DownloadData("http://limun.hr/main.aspx?id=18");
string result = System.Text.Encoding.UTF8.GetString(response);
}
如有任何帮助,我们将不胜感激。
编辑:我忘了包括错误之处。返回的字符串只包含一个字符 - @.
一些网站会查看 HTTP headers 中的 UserAgent 字符串,以查看调用者是否是实际的 Web 浏览器。如果您使用 HttpWebRequest class,您可以更好地控制调用,并且可以欺骗 UserAgent 字符串来模拟真实的 Web 浏览器。尝试如下操作使其工作:
HttpWebRequest request = WebRequest.Create("http://limun.hr/main.aspx?id=18") as HttpWebRequest;
request.UserAgent = "Mozilla /5.0 (Compatible MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)";
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(););
string content = reader.ReadToEnd();
reader.Close();
response.Close();
Console.WriteLine(content);
问题确实是 HTTP headers 中的 UserAgent 字符串是错误的,但是您可以使用 WebClient
class 在 headers 中添加该字符串,并让您的代码更简单:
using (WebClient client = new WebClient())
{
client.Headers.Add("user-agent", "Mozilla /5.0 (Compatible MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)");
string res = client.DownloadString("http://limun.hr/main.aspx?id=18");
Console.WriteLine(res);
}
注意:WebClient
也有一个DownloadStringTaskAsync
方法,根据您的需要,您可能会发现它很有用。
基本上我没有下载网页的经验,我试图获得这个包含每日股票交易价格的页面,但运气不好。我不确定是我在这里做错了什么,还是网络服务器不允许这种请求。网站适用于 chrome 或 IE。
using (WebClient client = new WebClient())
{
byte[] response = client.DownloadData("http://limun.hr/main.aspx?id=18");
string result = System.Text.Encoding.UTF8.GetString(response);
}
如有任何帮助,我们将不胜感激。
编辑:我忘了包括错误之处。返回的字符串只包含一个字符 - @.
一些网站会查看 HTTP headers 中的 UserAgent 字符串,以查看调用者是否是实际的 Web 浏览器。如果您使用 HttpWebRequest class,您可以更好地控制调用,并且可以欺骗 UserAgent 字符串来模拟真实的 Web 浏览器。尝试如下操作使其工作:
HttpWebRequest request = WebRequest.Create("http://limun.hr/main.aspx?id=18") as HttpWebRequest;
request.UserAgent = "Mozilla /5.0 (Compatible MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)";
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(););
string content = reader.ReadToEnd();
reader.Close();
response.Close();
Console.WriteLine(content);
问题确实是 HTTP headers 中的 UserAgent 字符串是错误的,但是您可以使用 WebClient
class 在 headers 中添加该字符串,并让您的代码更简单:
using (WebClient client = new WebClient())
{
client.Headers.Add("user-agent", "Mozilla /5.0 (Compatible MSIE 9.0;Windows NT 6.1;WOW64; Trident/5.0)");
string res = client.DownloadString("http://limun.hr/main.aspx?id=18");
Console.WriteLine(res);
}
注意:WebClient
也有一个DownloadStringTaskAsync
方法,根据您的需要,您可能会发现它很有用。