我的网址如下:
http://www.matweb.com/search/DataSheet.aspx?MatGUID=849e2916ab1541be9ff6a17b78f95c82
我想使用以下代码从该页面下载源代码:
private static string urlTemplate = @"http://www.matweb.com/search/DataSheet.aspx?MatGUID=";
static string GetSource(string guid)
{
try
{
Uri url = new Uri(urlTemplate + guid);
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "GET";
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
Stream responseStream = webResponse.GetResponseStream();
StreamReader responseStreamReader = new StreamReader(responseStream);
String result = responseStreamReader.ReadToEnd();
return result;
}
catch (Exception ex)
{
return null;
}
}
当我这样做时,我得到:
您似乎没有启用Cookie。 MatWeb需要启用cookie。
好的,我理解,所以我添加了一行:
CookieContainer cc = new CookieContainer();
webRequest.CookieContainer = cc;
我得到了:
由于过度使用,您的IP地址受到限制。当IP地址可能被公司中的许多人或通过互联网服务提供商共享时,问题可能更加复杂。对由此带来的任何不便,我们深表歉意。
我可以理解这一点但是当我尝试使用网络浏览器访问此页面时,我没有收到此消息。我该怎么做才能获得源代码?一些cookie或http标题?
答案 0 :(得分:4)
它可能不喜欢您的UserAgent。试试这个:
webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 (.NET CLR 3.5.30729)"; //maybe substitute your own in here
答案 1 :(得分:1)
如果你得到“过度使用”的反应,看起来你正在做一些公司不喜欢的事情。
答案 2 :(得分:0)
您下载的网页太快了。
使用浏览器时,您每秒最多可以获得一页。使用应用程序,您可以每秒获得几页,这可能是他们的Web服务器正在检测的内容。因此过度使用。