Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
20 Апрель 2024, 08:51:34
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Google search API не работает

Страниц  :   Вниз
  Печать  
Автор Тема: Google search API не работает  (Прочитано 2338 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Autogeniusz.pl
Достанем всё!
Настоящий гродненец
****

Репутация: +88/-0
Offline Offline

Пол: Мужской
Сообщений: 493

Любые запчасти по нереально низким ценам!

https://vk.com/avtogenij Просмотр профиля WWW
« : 12 Январь 2013, 00:04:46 »

Всем добрый вечер Улыбка Дела страничку с поиском, используя google search api, результаты получал в JSON. Вроде как все было нормально, но тут гуглу, видимо, надоело со мной работать, и больше он мне данные не высылает... В чем может быть проблема? синтаксис запроса:
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=belarus такой.
На скрине то, что выдает гугл вместо нормальных данных (1 скрин), на втором скрине - попытка через 10 минут, следующий клик - опять ошибка...
PS: и еще - может кто сталкивался, как убрать эти кракозябры (текст, а потом вставки типа \u003cb\u003e...\u003c/b\u003e \u003cb) в C#, думаю может их просто вырезать из текста ответа гугла? или может какой параметр надо в запросе поменять, чтоб он человеческую речь слал)))


* ErrorImage.jpg (21,42 Кб, 900x174 - просмотрено 360 раз.)

* NotErrorImage.jpg (90,3 Кб, 900x727 - просмотрено 713 раз.)
Записан

coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #1 : 12 Январь 2013, 06:46:44 »

Крокозябры - это коды спецсимволов (всякие там ':' '/' '<' '>' )
Откройте свой запрос в браузере, а результат вставьте в  JSON-валидатор (к примеру http://jsonlint.com/)
для http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=belarus
получилось:
Код:
{
    "responseData": {
        "results": [
            {
                "GsearchResultClass": "GwebSearch",
                "unescapedUrl": "http://www.belarus.by/",
                "url": "http://www.belarus.by/",
                "visibleUrl": "www.belarus.by",
                "cacheUrl": "http://www.google.com/search?q=cache:ziPBga_n060J:www.belarus.by",
                "title": "Official website, <b>Belarus</b> | <b>Belarus</b>.by",
                "titleNoFormatting": "Official website, Belarus | Belarus.by",
                "content": "Start here for your complete introduction to the republic of <b>Belarus</b>, a fascinating   country with a rich cultural heritage and extraordinary landscapes."
            },
            {
                "GsearchResultClass": "GwebSearch",
                "unescapedUrl": "http://en.wikipedia.org/wiki/Belarus",
                "url": "http://en.wikipedia.org/wiki/Belarus",
                "visibleUrl": "en.wikipedia.org",
                "cacheUrl": "http://www.google.com/search?q=cache:eBZO_Um_t40J:en.wikipedia.org",
                "title": "<b>Belarus</b> - Wikipedia, the free encyclopedia",
                "titleNoFormatting": "Belarus - Wikipedia, the free encyclopedia",
                "content": "<b>Belarus</b> officially the Republic of <b>Belarus</b>, is a landlocked country in Eastern   Europe bordered by Russia to the northeast, Ukraine to the south, Poland to the <b>...</b>"
            },
            {
                "GsearchResultClass": "GwebSearch",
                "unescapedUrl": "https://www.cia.gov/library/publications/the-world-factbook/geos/bo.html",
                "url": "https://www.cia.gov/library/publications/the-world-factbook/geos/bo.html",
                "visibleUrl": "www.cia.gov",
                "cacheUrl": "http://www.google.com/search?q=cache:uIpglDuYo40J:www.cia.gov",
                "title": "<b>Belarus</b> - CIA - The World Factbook",
                "titleNoFormatting": "Belarus - CIA - The World Factbook",
                "content": "Dec 19, 2012 <b>...</b> Features a map and brief descriptions of geography, economy, government, and   people."
            },
            {
                "GsearchResultClass": "GwebSearch",
                "unescapedUrl": "http://travel.state.gov/travel/cis_pa_tw/cis/cis_1033.html",
                "url": "http://travel.state.gov/travel/cis_pa_tw/cis/cis_1033.html",
                "visibleUrl": "travel.state.gov",
                "cacheUrl": "http://www.google.com/search?q=cache:Qjo5qeihttAJ:travel.state.gov",
                "title": "<b>Belarus</b>",
                "titleNoFormatting": "Belarus",
                "content": "Offers travel information including Background Notes, entry and exit requirements  , safety and security, crime, health and transport."
            }
        ],
        "cursor": {
            "resultCount": "21,400,000",
            "pages": [
                {
                    "start": "0",
                    "label": 1
                },
                {
                    "start": "4",
                    "label": 2
                },
                {
                    "start": "8",
                    "label": 3
                },
                {
                    "start": "12",
                    "label": 4
                },
                {
                    "start": "16",
                    "label": 5
                },
                {
                    "start": "20",
                    "label": 6
                },
                {
                    "start": "24",
                    "label": 7
                },
                {
                    "start": "28",
                    "label": 8
                }
            ],
            "estimatedResultCount": "21400000",
            "currentPageIndex": 0,
            "moreResultsUrl": "http://www.google.com/search?oe=utf8&ie=utf8&source=uds&start=0&hl=en&q=belarus",
            "searchResultTime": "0.14"
        }
    },
    "responseDetails": null,
    "responseStatus": 200
}
Записан

HTTP Error 404 - File or directory not found.
Clinique Happy
Почетный гродненец
*****

Репутация: +130/-6
Offline Offline

Пол: Мужской
Сообщений: 1198


Меняю себя и мир вокруг себя!

Просмотр профиля WWW
« Ответ #2 : 12 Январь 2013, 10:46:01 »

Всем добрый вечер  Дела страничку с поиском, используя google search api, результаты получал в JSON. Вроде как все было нормально, но тут гуглу, видимо, надоело со мной работать, и больше он мне данные не высылает... В чем может быть проблема? синтаксис запроса:
http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=belarus такой.
На скрине то, что выдает гугл вместо нормальных данных (1 скрин), на втором скрине - попытка через 10 минут, следующий клик - опять ошибка...
PS: и еще - может кто сталкивался, как убрать эти кракозябры (текст, а потом вставки типа \u003cb\u003e...\u003c/b\u003e \u003cb) в C#, думаю может их просто вырезать из текста ответа гугла? или может какой параметр надо в запросе поменять, чтоб он человеческую речь слал)))

\u003cb - это юникод, преобразовать плёвое дело, вырезать - глупое.

Я думаю 403 ошибка возникла в случае превышения количества запросов к api в единицу времени и тебя забанили по IP (возможно это был и не ты). Ну или либо ты нарушил одно из правил гугла и теперь все запросы реджектаются.
Записан

Autogeniusz.pl
Достанем всё!
Настоящий гродненец
****

Репутация: +88/-0
Offline Offline

Пол: Мужской
Сообщений: 493

Любые запчасти по нереально низким ценам!

https://vk.com/avtogenij Просмотр профиля WWW
« Ответ #3 : 14 Январь 2013, 15:15:35 »

В общем кракозябры действительно решились очень легко Улыбка Как-то так (может кому пригодится):

GoogleSay = System.Text.RegularExpressions.Regex.Unescape(GoogleSay);

где GoogleSay - строка ответа JSON от гугла.

А вот как доказать гуглу, что я хороший, и не надо меня банить Смеющийся , так пока не решил
Записан

arturline
Молодой Гродненец
*

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 27


Я люблю Гродненский форум!

Просмотр профиля
« Ответ #4 : 14 Январь 2013, 20:56:12 »

Код в студию.
P.S. У меня все работает.
Записан
Autogeniusz.pl
Достанем всё!
Настоящий гродненец
****

Репутация: +88/-0
Offline Offline

Пол: Мужской
Сообщений: 493

Любые запчасти по нереально низким ценам!

https://vk.com/avtogenij Просмотр профиля WWW
« Ответ #5 : 15 Январь 2013, 10:47:06 »

public static List<Result> CreateJSON(string SearchText, int number)
        {
            string s = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&hl=ru&q=" + HttpUtility.UrlEncode(SearchText)+"&start="+number;
            HttpWebRequest r0 = (HttpWebRequest)WebRequest.Create(s);
            r0.Method = "GET";

            HttpWebResponse GoogleResponse = (HttpWebResponse)r0.GetResponse();
            StreamReader sr = new StreamReader(GoogleResponse.GetResponseStream());
            string GoogleSay = sr.ReadToEnd();
            sr.Close();
            GoogleSay = HttpUtility.UrlDecode(GoogleSay);
            GoogleSay = System.Text.RegularExpressions.Regex.Unescape(GoogleSay);
           
            string[] strArr = GoogleSay.Split
                (new string[]            { "{\"responseData\": {\"results\":[{",
        "}],\"cursor\":{\"resultCount\":\"",
        "\",\"pages\"",
        "},{"
        },
        StringSplitOptions.RemoveEmptyEntries);
            List<string> tempLst = new List<string>();

            for (int i = 0; i < strArr.Length;i++ )
            {
                if (strArr.Contains("GsearchResultClass")) { tempLst.Add(strArr); }
                else
                {
                    break;
                }
            }
            strArr = tempLst.ToArray<string>();           
            List<Result> results = new List<Result>();
            foreach (string i in strArr)
            {
                results.Add(new Result(i));               
            }
            return results;
        }
В итоге во вьюшку идет список объектов (результат). Там уже нужные поля оформляются и выводятся пользователю. Сегодня запустил - работает, вчера перед сном - не работало Шокирован В коде ничего не менял)


* Снимокфф.jpg (56,85 Кб, 900x628 - просмотрено 330 раз.)
Записан

Clinique Happy
Почетный гродненец
*****

Репутация: +130/-6
Offline Offline

Пол: Мужской
Сообщений: 1198


Меняю себя и мир вокруг себя!

Просмотр профиля WWW
« Ответ #6 : 15 Январь 2013, 10:59:35 »

GoogleSay.Split
Жгёшь. А десерилизовать json в нормальный объект слабо? Улыбка
Записан

Autogeniusz.pl
Достанем всё!
Настоящий гродненец
****

Репутация: +88/-0
Offline Offline

Пол: Мужской
Сообщений: 493

Любые запчасти по нереально низким ценам!

https://vk.com/avtogenij Просмотр профиля WWW
« Ответ #7 : 15 Январь 2013, 11:15:46 »

Не слабо - так и сделаю) просто в данном случае это проблему не решит - без десериализаци при наличии полноценного ответа от гугла всё работает, а вот когда он начинает 403 ошибку присылать - уже бесполезно что-то делать... такое ощущение, что я могу максимум пару раз подряд к нему обратиться, а потом банят Грустный
Записан

arturline
Молодой Гродненец
*

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 27


Я люблю Гродненский форум!

Просмотр профиля
« Ответ #8 : 15 Январь 2013, 22:52:59 »

У меня началась такая же ерунда. Срабатывает раз через раз.
Насколько я понимаю, нужно использовать асинхронные запросы к Goolge, тогда проблем не будет
Записан
Clinique Happy
Почетный гродненец
*****

Репутация: +130/-6
Offline Offline

Пол: Мужской
Сообщений: 1198


Меняю себя и мир вокруг себя!

Просмотр профиля WWW
« Ответ #9 : 16 Январь 2013, 00:26:20 »

У меня началась такая же ерунда. Срабатывает раз через раз.
Насколько я понимаю, нужно использовать асинхронные запросы к Goolge, тогда проблем не будет
А разница какая, используешь ты синхронные либо асинхронные запросы?
Записан

arturline
Молодой Гродненец
*

Репутация: +4/-0
Offline Offline

Пол: Мужской
Сообщений: 27


Я люблю Гродненский форум!

Просмотр профиля
« Ответ #10 : 16 Январь 2013, 10:26:52 »

У меня началась такая же ерунда. Срабатывает раз через раз.
Насколько я понимаю, нужно использовать асинхронные запросы к Goolge, тогда проблем не будет
А разница какая, используешь ты синхронные либо асинхронные запросы?
А разница какая, используешь ты синхронные либо асинхронные запросы?
Спасибо, вопрос решен!
Записан
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2024, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,123 секунд. Запросов: 19.