ページをスクレイプしようとしていますが、コンテンツが非同期で送り込まれるため、最初の応答は本文に何もありません。たとえば、アップルのWebサイトでの検索結果:http://www.apple.com/uk/search/ ?q = searching + for + something&sec = global
hpricotで検索した結果をうまく取得する方法について何かアイデアはありますか?
ありがとう。
ページをスクレイプしようとしていますが、コンテンツが非同期で送り込まれるため、最初の応答は本文に何もありません。たとえば、アップルのWebサイトでの検索結果:http://www.apple.com/uk/search/ ?q = searching + for + something&sec = global
hpricotで検索した結果をうまく取得する方法について何かアイデアはありますか?
ありがとう。
参照する検索ページが読み込まれると、javascript / ajaxを介して他の場所にリクエストを送信し、検索結果にデータを入力します。これは、ページに表示されているものです。Hpricot自体は、実際の検索結果リストを取得するためにページに付属しているjavascriptを解釈する方法がないため、ここでは役に立ちません。
ここで、関心のあるものが検索結果である場合、そのページを入力して検索クエリを入力したときに何が起こるかを少し分析する必要があります。ページ内の一部のJavaScriptはクエリを受け取り、Appleのサーバー内の他のスクリプトを(XMLHttpRequestまたは同様のAJAX手法を介して)呼び出します。これは、実際にデータベースで検索を実行し、結果を返すものです。
FirefoxをFirebugプラグインと一緒にインストールするか、ページとそのjavascriptコンポーネントが送受信する実際のリクエストを確認する他の方法をお勧めします。参照した検索ページでは、2つの部分が取得されていることがわかります。1つは、このURLからの「注目の」結果です。
http://www.apple.com/global/scripts/search_featured.php?q=mac+mini§ion=global&geo=uk
検索文字列が「q」パラメータに含まれていることに注意してください。
第二に、長い結果リストはここから来ます:
http://www.apple.com/search/service/nph-search10?site=uk_www&filter=1&snum=50&q=mac+mini
これらは両方ともXMLドキュメントです。これらのURLをHpricotで解析する方が幸運かもしれません。