Pergunta

Eu tenho um pequeno aplicativo em Java que procura imagens usando pesquisa de imagens do Bing. O problema que estou enfrentando é que, está ficando apenas primeiros 20 imagens. Pode ser porque quando buscamos em bing.com ele preenche primeiros 20 imagens em primeiro lugar e, em seguida, seu um recurso de rolagem infinita.

Existe alguma maneira de pesquisar mais de 20 imagens usando bing?

Cheers:)

Foi útil?

Solução

Eu estou supondo que isto é porque usa esse local Ajax para preencher a lista de rolagem "infinito", como você chamá-lo.

Você provavelmente enviar um pedido de http e obter a página inicial (btw no meu navegador eu tenho 6 imagens em frente x 4 para baixo, ou seja, 24 não 20; pensar nisso talvez meu cliente também tem 20 somente no primeiro e obteve o último 4 w / ajax ...), e que você precisa fazer a calha paginação por meio de requisições Ajax.

À primeira vista, o xhtml e associado javascript da página é muito densa e um tanto ofuscado, Levaria um tempo para se orientar ... Uma alternativa para analisar esta página é sim usar um packet sniffer (como < a href = "http://www.wireshark.org/" rel = "nofollow noreferrer"> wireshark ) e para capturar as solicitações que ocorrem quando você rolar para baixo.

Essencialmente, isso provavelmente vai expor algum tipo de ajax pedido, que você pode facilmente emular com java. Normalmente a resposta ajax é fácil de analisar independentemente da sua natureza (xml, jason, gzip ...).

Um possíveis dificuldades a esse plano bem definido é se os dados retornados na resposta ajax é criptografado, por exemplo, onde as imagens extras são empacotados em algum tipo de envelope para o qual você precisa então descobrir o formato.

Dependendo da tarefa real na mão, você pode tentar alternativas, tais como automações dentro GreaseMonkey (no Firefox) ou ferramentas similares.

O que de Bing API?
Note-se que todas as abordagens acima são semelhantes aos screen-scraping e, portanto, bastante sensível a mudanças até mesmo hora em aplicação Bing, e, dependendo do uso eficaz e contexto, isso pode colocar o projeto em uma área cinzenta legal ... Uma abordagem melhor pode ser a de registar e obter uma identificação correcta aplicação com MS / Bing e para usar o bing API .

Outras dicas

Você está simulando um navegador? não o motor Bing tem um ponto de entrada para programas em vez - um serviço web ou assim -. o que fazer a sua tarefa muito mais fácil


EDIT: SDK parece ser aqui: http://msdn.microsoft .com / en-us / library / cc980922.aspx

Apenas queria postar uma resposta direta à pergunta: Bing usa Ajax (é claro) para a rolagem infinita. Cada "tick" é baseado em um simples pedido ajax get, que accuires novas imagens.

Por exemplo, este URL retorna 30 resultados (121-151) em uma "htmlraw" formato com base na consulta "Payne max". http://www.bing.com/images/async? q = max + Payne & format = htmlraw & primeira = 121

Edit: Ele funciona com a URL original também, basta adicionar & primeira = número para o querystring. Exemplo: www.bing.com/images/search?q=payne&go=&form=QBLH&scope=images&filt=all&first=10

Estou construindo meu próprio coletor de imagem em massa (para um "projeto de aprendizagem" para mim) e eu descobri que ele é paginada assim.

FYI, Google e Bing são fáceis, Yahoo e Altavista (redundante, uma vez que seus resultados são de Yahoo) são muito mais problemático - eles não postar o DirectLink para a imagem original

.

Divirta-se! :)

Isto pode ser feito usando count parâmetro. Por exemplo, eu tentei GET " https://api.cognitive.microsoft.com/bing/v7.0/images/search?q=shoes&mkt=en-us&count=30 " chamada e ele retorna 30 imagens.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top