2012-04-12 10 views
0

こんにちは私は学術プロジェクトをやっている学生です。私は自分のプロジェクトを完了するためのガイダンスが必要です。grailsでWeb検索を行うには

私のプロジェクトは、3つの異なる書店の書籍を検索し、3つのすべての店舗から価格を提供するgrailsフレームワークに基づいています。検索するにはヘルプが必要です。 一度ユーザーが必要な書籍を入力すると、その書店の検索を指示する方法。

ありがとうございました

答えて

1

詳細を入力する必要があります。書店を検索することによって、データベース内を検索することを意味しますか、またはAmazonなどのようなものですか?

+0

yaそれはamazon、flipkart、infibeamのような書店から検索し、検索された書籍の価格を取得する必要があります。 – ramya

+0

ほとんどのAPIは明確に定義されています。私はフリップカルが持っているかどうかはわかりませんが。しかし、Amazonはすべきだ。それのためのGoogle。サイトがそうでなければ、Apache Nutchのようなクローラを使ってHTMLコンテンツを取得して解析し、そこからデータを抽出する必要があります。あなたが解析しているhtml構造を知っているので、かなり簡単になるはずです。 – chethan

+0

ya私はamazon.werのapiを見つけましたか?amazon apiをgrailsコードに配置しますか? – ramya

0

私はこれらのオンライン書店にAPIがあるかどうか、または選択肢がある場合は、に検索を行うために使用できるAPIを持つオンライン書店を選択します。たとえば、Amazonにはカタログの検索を実行するために使用できる「Product Advertising API」があります(http://docs.amazonwebservices.com/AWSECommerceService/latest/DG参照)。あなたは通常、これらの種類のものにアクセスするためにアフィリエイトとして登録する必要があります。

APIを使用してアクセス可能な複数のオンライン書店がある場合は、それらを呼び出して結果を調整するためのgrailsコードを書くのは比較的簡単です。 APIは、通常、RESTまたはSOAP(たとえばAmazon - AnatomyOfaRESTRequestを参照)のいずれかのWebリクエストの形式をとります。 GroovyのHTTPBuilderを使用して、簡単なRESTを使用できる場合は書店のAPI Webサービスを呼び出して使用できますが、Grailsのプラグインが2つあると考えられます(REST Client builderなど)。 SOAPについては、Grails CXF Client Grailsプラグインを検討してください。

APIを1つずつ検索することができます。さらに進めたい場合は、新しいサーブレット3.0の非同期機能を使用して、同時に3つのAPIをすべて非同期で呼び出すこともできますGrails 2.0.x:Grails Web Features - 「サーブレット3.0非同期機能」までスクロールします)。おそらく、DBを経由して、この座標、そしておそらく結果がでてくるときに確認するように結果ページにAJAXを通じてポーリングする必要があるだろう

次のように順序は次のようになります。

  1. ユーザーからの検索要求を提出しますサーバへのページ上のフォーム
  2. サーバは、要求を追跡するためにDBオブジェクトを作成して保存し、API呼び出しを非同期的に開始します(つまり、リクエストはブロックされません)。
  3. 「保留中の結果」ページがユーザーに表示され、定期的なAJAX更新が結果の進捗状況を確認するために使用されます。
  4. 一方、API呼び出しが実行されています。結果がうまくいけば、DBオブジェクト(またはそれ以上のもの)を更新して、結果とコールの状態を保存します。
  5. 最終的にはすべての結果がDBに格納され、結果を照会しているサーバーへの定期的なAJAXチェックでページに戻すことができます。 3つの書店への通話がすべて終了するのを待つか、結果が返ってきたときにページを更新することができます。
  6. あなたのAJAXコールはページを更新し、結果をユーザーに表示します。

書店にはAPIがない場合は、書店のウェブサイトから直接「ウェブスクレイピング」を検討する必要があります。ウェブページは明らかに頻繁に変わるので、これはやや難しく、かなり脆くなる可能性があります。私はGeb(http://www.gebish.org/)を使用してブラウジングを自動化し、必要なものを選ぶための単純な文字列マッチングを使用しました。また、擦り傷が特に許されないことがあるので、ウェブサイトの条件&の条件をチェックすることを忘れないでください。

上記は、この種のことを達成するためのサーバー指向の方法です。純粋にクライアント(ブラウザ)上で行うことができ、AJAXを使用してWebサービスに呼び出し、JavaScript経由で処理することができます。しかし、私はサーバーの男:)

+0

こんにちは、おかげでね:)、あなたは疑問があれば明らかにすることができるように、あなたはウルメールIDを提供することができます – ramya

+0

母!私はあなたのためにあなたのプロジェクトをやっていないよ! :) stackoverflowについてもっと質問してもらえたら、私はそのように答えることができます。あなたが役に立ったと思うなら、upvoting/accepting answerを考えてください:) – Chris

+0

index.gspページで{link = "http://www.flipkart.com/search/a/books?query="}このリンクを追加しようとしました。 。それは私が3つのウェブサイトをどのように比較して、それをそれぞれのサイトに導くかを得ることができない、bookname指定page.but mでflipkartサイトに導く。 – ramya

関連する問題