2011-03-31 43 views
0

我试图创建一个Windows服务。服务的目的是从数据库中提取URL并从谷歌中检查他们的页面等级。目的是抓住任何一个伪造他们的页面行列。我在http://www.codeproject.com/KB/aspnet/Google_Pagerank.aspx找到了一些代码并使用它。在ttp://toolbarqueries.google.com/search?q = info:(domainName)上获取“远程服务器返回错误:(503)服务器不可用”

现在,这里是代码

public static int GetPageRank() 
    { 

     string file = "http://toolbarqueries.google.com/search?q=info:codeproject.com"; 
     try 
     { 
      //Request PR from Google 



      WebRequest request = WebRequest.Create(file); 
      WebResponse response = request.GetResponse(); 

      StreamReader reader = new StreamReader(response.GetResponseStream()); 
      string data = reader.ReadToEnd(); 

      reader.Close(); 
      response.Close(); 

      //Parse PR from string 
      int pageRank = -1; 
      if (data.IndexOf(':') != -1) 
      { 
       data = data.Substring(data.LastIndexOf(':') + 1); 
      } 

      int.TryParse(data, out pageRank); 

      return pageRank; 
     } 
     catch (Exception ex) 
     { 

      MessageBox.Show(ex.Message); 
      return -1; 
     } 
    } 

现在正在发生的事情是这样的,当这种方法的一些尝试,例如100次尝试,我开始越来越下列异常后调用。 “远程服务器返回错误:(503)服务器不可用”。我已经做了一些研究,我也看到了有关堆栈溢出的相关问题。显然谷歌停止提供服务请求,如果他们中的许多源于同一个IP。有没有任何解决办法可以让我在两个小时或三个小时内检查几千个网页。

回答

0

Are there any work arounds to it that will enable me to check several thousand pageranks in say two hours or three hours[?]

没有。你只是要求太多的数据。可能有一个JSON或XML API来获得批量响应,但我不知道有任何来自Google的消息。

0

最后我们做的是从代理提供商处获得代理并使用它们。必须使用信号量,以便为每个线程分配一个新的代理,同时确保每分钟不会使用超过3次的代理,并且以循环顺序方式轮换代理。没有其他解决这个问题的方法。

相关问题