matweb.com:如何获取页面来源?

时间:2010-12-20 20:11:39

标签: c# cookies httpwebrequest http-headers

我的网址如下:
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标题?

3 个答案:

答案 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服务器正在检测的内容。因此过度使用。