2010-12-20 39 views
3

我有网址,如:
http://www.matweb.com/search/DataSheet.aspx?MatGUID=849e2916ab1541be9ff6a17b78f95c82matweb.com:如何获取页面的源?

我想使用此代码从该页面下载源代码:

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地址可能被公司中的许多人共享或通过互联网服务提供商共享时,问题可能会更加复杂。很抱歉给您带来不便。

我可以理解这一点,但当我尝试使用Web浏览器访问此页面时,我没有收到此消息。我能做些什么来获得源代码?一些cookie或http头文件?

回答

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 
+0

哦,谢谢!这样可行 :)。顺便说一句,我怎么能得到我自己的UserAgent? – 2010-12-20 20:47:30

+0

要获取您的浏览器发送的UserAgent,请尝试以下网站:http://whatsmyuseragent.com/ – 2010-12-20 20:53:04

1

看起来你正在做一些公司不喜欢的事情,如果你有一个“过度使用”的回应。

+0

他说只有在试图运行他的程序时他才会收到此消息。所以他的知识产权不是问题。 – 2010-12-20 20:42:05

+0

看起来像是用户代理,请参阅上文。 – Broam 2010-12-20 22:35:24

0

您正在下载页面的速度太快。

当您使用浏览器时,您可能每秒钟最多达到一页。使用应用程序,您可以每秒获得几页,这可能是他们的Web服务器正在检测的内容。因此过度使用。

+0

这不是真的,因为即使我运行此功能一次,我也会收到此消息。所以太快的城镇负荷不是问题。 – 2010-12-20 20:48:39