0

私は、bing 画像検索を使用して画像を検索する Java の小さなアプリケーションを持っています。私が直面している問題は、最初の 20 枚の画像しか取得できないことです。おそらく、bing.com で検索すると、最初の 20 枚の画像が表示され、次に無限スクロール機能が表示されるためです。

bing を使用して 20 を超える画像を検索する方法はありますか?

乾杯 :)

4

4 に答える 4

0

ブラウザをシミュレートしていますか?Bingエンジンには、代わりにプログラムのエントリポイント(Webサービスなど)がありません。これにより、タスクがはるかに簡単になります。


編集: SDK はここにあるようです: http://msdn.microsoft.com/en-us/library/cc980922.aspx

于 2009-10-30T06:02:07.037 に答える
0

質問に対する直接の回答を投稿したかっただけです。Bing は無限スクロールに (もちろん) Ajax を使用しています。各「ティック」は、新しい画像を取得する単純な ajax get リクエストに基づいています。

たとえば、この URL は、クエリ「max payne」に基づいて「htmlraw」形式で 30 件の結果 (121 ~ 151) を返します。 http://www.bing.com/images/async?q=max+payne&format=htmlraw&first=121

編集: 元の URL でも機能します。クエリ文字列に &first=NUMBER を追加するだけです。例: www.bing.com/images/search?q=payne&go=&form=QBLH&scope=images&filt=all&first=10

私は独自の一括画像コレクターを構築しています (自分自身の「学習プロジェクト」用)。このようにページ付けされていることがわかりました。

参考までに、Google と Bing は簡単ですが、Yahoo と Altavista (結果は Yahoo からのものなので冗長です) ははるかに問題があります。元の画像への直接リンクを投稿していません。

楽しむ!:)

于 2010-04-06T18:20:47.190 に答える
0

これは、このサイトが ajax を使用して「無限」のスクロール リストを呼び出すためだと思います。

あなたはおそらくhttpリクエストを送信して最初のページを取得します(ところで、私のブラウザでは、x 4で6つの画像を取得しました。つまり、20ではなく24です。考えてみると、私のクライアントも最初だけ20を取得し、最後の4をajaxで取得した可能性があります...)、そして ajax リクエストを介してページング トラフを実行する必要があります。

一見すると、このページの xhtml および関連する JavaScript は非常に密集しており、やや難読化されています。理解するのに時間がかかります... このページを分析する代わりに、パケット スニファー ( wiresharkなど) を使用して、下にスクロールしたときに発生するリクエストをキャプチャします。

基本的に、これにより何らかの形式の ajax リクエストが公開される可能性が高く、これを Java で簡単にエミュレートできます。通常、ajax 応答は、その性質 (xml、jason、gzip など) に関係なく簡単に解析できます。

この適切にレイアウトされた計画に問題が生じる可能性があるのは、ajax 応答で返されるデータが暗号化されている場合です。たとえば、余分な画像がある種のエンベロープにバンドルされている場合は、そのフォーマットを発見する必要があります。

目前の実際のタスクに応じて、GreaseMonkey (Firefox の場合) または同様のツール内の自動化などの代替手段を試すことができます。

Bing API は?
上記のアプローチはすべてスクリーンスクレイピングに似ているため、Bing アプリケーションのわずかな変更にも非常に敏感であり、効果的な使用法とコンテキストによっては、プロジェクトが法的な灰色の領域に置かれる可能性があることに注意してください... より良いアプローチMS/Bing に適切なアプリケーション ID を登録して取得し、Bing APIを使用することが考えられます。

于 2009-10-30T04:41:17.433 に答える