0

Windows サービスを作成しようとしています。サービスの目的は、データベースから URL を取得し、Google からページ ランクを確認することです。目的は、ページ ランクを偽装している人を捕まえることです。http://www.codeproject.com/KB/aspnet/Google_Pagerank.aspxでいくつかのコードを見つけて使用しました。

今ここにコードがあります

  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から発信された場合、Googleはリクエストの処理を停止するようです。たとえば、2 時間または 3 時間で数千のページランクをチェックできるようにする回避策はありますか。

4

2 に答える 2

0

最後に、プロキシ プロバイダーからプロキシを取得して使用しました。すべてのスレッドに新しいプロキシが割り当てられるようにセマフォを使用する必要がありましたが、プロキシは 1 分間に 3 回以上使用されず、プロキシは循環順次方式でローテーションされます。これを回避する方法は他にありません。

于 2011-12-16T11:31:09.317 に答える
0

たとえば 2 時間または 3 時間で数千のページランクをチェックできるようにする回避策はありますか?

いいえ。あなたは単にあまりにも多くのデータを要求しています。バッチ応答を取得するための JSON または XML API があるかもしれませんが、Google からのものは知りません。

于 2011-03-31T15:29:11.120 に答える