Есть ли более эффективный способ получить количество результатов поиска по запросу Google? - PullRequest
0 голосов
/ 14 февраля 2010

Сейчас я использую этот код:

string url = "http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=hey&esrch=FT1";
            string source = getPageSource(url);
            string[] stringSeparators = new string[] { "<b>", "</b>" };
            string[] b = source.Split(stringSeparators, StringSplitOptions.None);
            bool isResultNum = false;
            foreach (string s in b)
            {
                if (isResultNum)
                {
                    MessageBox.Show(s.Replace(",", ""));
                    return;
                }
                if (s.Contains(" of about "))
                {
                    isResultNum = true;
                }
            }

К сожалению, это очень медленно, есть ли лучший способ сделать это? Также это законно, чтобы запросить Google, как это? Из ответа на этот вопрос это не звучало так, как будто Как загрузить результаты поиска Google?

1 Ответ

3 голосов
/ 14 февраля 2010

Вы уже ссылались на публикацию, в которой упоминается переход от SOAP API к AJAX.

Интерфейс RESTful должен дать вам то, что вам нужно, поскольку он ограничивает возвращаемые наборы результатов, но дает вам оценкаResultCount и, похоже, не вызывает никаких юридических проблем (на данный момент) .


Обновление

Я перешел по ссылке со страницы API Googles на www.json.org и нашел ссылку на эту библиотеку в sourceforge . Я сам еще не пробовал, но думаю, что это будет полезно для вас.

Обновление 2

Похоже, Json.Net предлагает лучшую поддержку, чем csjson.

Json.NET образец

...
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(googleUri);
request.Referer = "http://www.your-referer.com";
HttpWebResponse response = (HttpWebResponse)req.GetResponse();
Stream responsestream = response.GetResponseStream();
StreamReader responsereader = new StreamReader(responsestream);
JObject jo = JObject.Parse(responsereader.ReadToEnd());
int resultcount = (int)jo.SelectToken("responseData.cursor.estimatedResultCount");
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...