Поиск картинок Java Bing - PullRequest
       29

Поиск картинок Java Bing

0 голосов
/ 30 октября 2009

У меня есть небольшое приложение в Java, которое ищет изображения с помощью поиска изображений Bing. Проблема, с которой я сталкиваюсь, состоит в том, что она получает только первые 20 изображений. Может быть потому, что когда мы выполняем поиск на bing.com, он сначала заполняет сначала 20 изображений, а затем функцию бесконечной прокрутки.

Есть ли способ поиска более 20 изображений с помощью bing?

Приветствия:)

Ответы [ 4 ]

0 голосов
/ 02 ноября 2017

Это можно сделать с помощью параметра count . Например, я попытался вызвать GET "https://api.cognitive.microsoft.com/bing/v7.0/images/search?q=shoes&mkt=en-us&count=30", и он возвращает 30 изображений.

0 голосов
/ 30 октября 2009

Вы симулируете браузер? Разве в движке Bing нет точки входа для программ - веб-службы или около того - что значительно облегчит вашу задачу.


РЕДАКТИРОВАТЬ: SDK, кажется, здесь: http://msdn.microsoft.com/en-us/library/cc980922.aspx

0 голосов
/ 06 апреля 2010

Просто хотел опубликовать прямой ответ на вопрос: Bing использует Ajax (конечно) для бесконечной прокрутки. Каждый «тик» основан на простом запросе ajax get, который запрашивает новые изображения.

Например, этот URL возвращает 30 результатов (121-151) в формате "htmlraw" на основе запроса "max payne". http://www.bing.com/images/async?q=max+payne&format=htmlraw&first=121

Edit: Он работает и с исходным URL, просто добавьте & first = NUMBER к строке запроса. Пример: www.bing.com/images/search?q=payne&go=&form=QBLH&scope=images&filt=all&first=10

Я создаю свой собственный сборщик изображений (для «учебного проекта» для себя) и обнаружил, что он разбит на страницы, как это.

К вашему сведению, Google и Bing просты, Yahoo и Altavista (избыточны, поскольку их результаты получены от Yahoo) гораздо более проблематичны - они не публикуют прямую ссылку на исходное изображение.

Веселись! :)

0 голосов
/ 30 октября 2009

Я предполагаю, что это потому, что этот сайт использует ajax для заполнения "бесконечного" списка прокрутки, как вы его называете.

Вы, вероятно, отправляете http-запрос и получаете начальную страницу (кстати, в моем браузере я получил 6 изображений по x 4, т.е. 24, а не 20; подумав об этом, возможно, мой клиент тоже сначала получил 20 и получил последние 4 w / ajax ...), и вам нужно будет выполнить корыто подкачки с помощью запросов ajax.

На первый взгляд, xhtml и связанный с ним javascript страницы очень плотный и несколько запутанный, потребуется некоторое время, чтобы сориентироваться ... Альтернативой анализу этой страницы является вместо этого использование анализатора пакетов (например, wireshark ) и для захвата запросов, которые происходят при прокрутке вниз.

По сути, это, вероятно, предоставит некоторую форму ajax-запроса, который вы можете затем легко эмулировать с помощью java. Обычно ответ ajax легко разбирать независимо от его природы (xml, jason, gzip ...).

Возможная ошибка в этом хорошо продуманном плане заключается в том, что возвращенные данные в ответе ajax зашифрованы, например, когда дополнительные изображения упакованы в какой-то конверт, для которого вам затем потребуется определить формат.

В зависимости от конкретной задачи, вы можете попробовать альтернативы, такие как автоматизация в GreaseMonkey (в Firefox) или аналогичные инструменты.

Как насчет Bing API?
Обратите внимание, что все вышеперечисленные подходы схожи с очисткой экрана и, следовательно, весьма чувствительны к даже незначительным изменениям в приложении Bing, и, в зависимости от эффективного использования и контекста, это может поставить проект в серую правовую зону ... Лучший подход возможно, зарегистрировать и получить правильный идентификатор приложения в MS / Bing и использовать Bing API .

...