Domanda

Ho una piccola applicazione in Java che cerca immagini usando la ricerca di immagini Bing. Il problema che sto affrontando è che sta ottenendo solo le prime 20 immagini. Forse perché quando cerchiamo su bing.com popola prima le prime 20 immagini e poi è una funzione di scorrimento infinita.

Esiste un modo per cercare più di 20 immagini usando bing?

Saluti :)

È stato utile?

Soluzione

Suppongo che questo sia perché questo sito utilizza ajax per popolare "infinito" elenco a scorrimento mentre lo chiami.

Probabilmente invii una richiesta http e ottieni la pagina iniziale (a proposito sul mio browser ho ottenuto 6 immagini in ordine x 4 in giù, ovvero 24 non 20; a pensarci bene forse il mio cliente ne ha anche 20 solo all'inizio e ha ottenuto gli ultimi 4 w / ajax ...) e dovresti eseguire il paging tramite richieste Ajax.

A colpo d'occhio, l'xhtml e il javascript associato della pagina sono molto densi e un po 'offuscati, ci vorrebbe un po' per orientarsi ... Un'alternativa all'analisi di questa pagina è invece usare uno sniffer di pacchetti (come < a href = "http://www.wireshark.org/" rel = "nofollow noreferrer"> WireShark ) e per acquisire le richieste che si verificano quando si scorre verso il basso.

Essenzialmente questo probabilmente esporrà una qualche forma di richiesta Ajax, che puoi facilmente emulare con Java. In genere la risposta ajax è facile da analizzare qualunque sia la sua natura (xml, jason, gzip ...).

Un possibile ostacolo a questo piano ben strutturato è se i dati restituiti nella risposta ajax sono crittografati, ad esempio dove le immagini extra sono raggruppate in una sorta di busta per la quale sarà quindi necessario scoprire il formato.

A seconda dell'attività effettiva a portata di mano, puoi provare alternative come le automazioni in GreaseMonkey (su Firefox) o strumenti simili.

Che cos'è l'API Bing?
Si noti che tutti gli approcci di cui sopra sono simili alla raschiatura dello schermo e quindi abbastanza sensibili a cambiamenti anche minuscoli nell'applicazione Bing e, a seconda dell'uso e del contesto efficaci, questo potrebbe mettere il progetto in un'area grigia legale ... Un approccio migliore potrebbe essere necessario registrarsi e ottenere un ID applicazione appropriato con MS / Bing e utilizzare API Bing .

Altri suggerimenti

Stai simulando un browser? Il motore Bing non ha invece un punto di accesso per i programmi - un servizio web o giù di lì - che renderebbe il tuo compito molto più semplice.


EDIT: SDK sembra essere qui: http://msdn.microsoft .com / it-it / library / cc980922.aspx

Volevo solo inviare una risposta diretta alla domanda: Bing usa Ajax (ovviamente) per lo scroll infinito. Ogni "segno di spunta" si basa su una semplice richiesta di ajax get, che accusa nuove immagini.

Ad esempio, questo url restituisce 30 risultati (121-151) in un "htmlraw" formato basato sulla query "max payne". http://www.bing.com/images/async? q = max + Payne & amp; format = htmlraw & amp; prima = 121

Modifica: Funziona anche con l'URL originale, basta aggiungere & amp; first = NUMBER alla stringa di query. Esempio: www.bing.com/images/search?q=payne&go=&form=QBLH&scope=images&filt=all&first=10

Sto costruendo il mio collettore di immagini di massa (per un "progetto di apprendimento" per me stesso) e ho scoperto che è impaginato in questo modo.

Cordiali saluti, Google e Bing sono facili, Yahoo e Altavista (ridondanti, poiché i loro risultati provengono da Yahoo) sono molto più problematici: non pubblicano il link diretto all'immagine originale.

Buon divertimento! :)

Questo può essere fatto usando il parametro conteggio . Ad esempio, ho provato GET " https://api.cognitive.microsoft.com/bing/v7.0/images/search?q=shoes&mkt=en-us&count=30 " chiama e restituisce 30 immagini.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top