3

http://www.hostels.com/hosteldetails.php/HostelNumber.11890のように、hostels.com から一部のデータ (具体的には空室状況と価格) をスクレイピングして最終的に解析しようとしました。問題は、泊数を選択して「今すぐ予約」を選択すると、URL文字列を介して何も渡されないことです(すべてAjaxを介して行われると思います)特定の日付または時間枠に直接移動できません.

私は Selenium、IRobotSoft、FakeApp などのブラウザー エミュレーターを試してみました。Selenium と Fake で完全なソースをキャプチャする作業の多くを実行できましたが、複数のページをスクレイピング (および他のソフトウェアで解析) する必要がある場合は、見苦しく、退屈でした。一日。

HTML DOM Parser、PHP Scriptable Web Browser、HTMLUnit、cScrape.php、Crowbar も試しました。彼らが Ajax を処理できなかったか、私が彼らを走らせることができなかったのです。

理想的には、依存関係をできるだけ少なくして、サーバーから実行できるものが欲しいのですが、現時点では実行したいと思っています。

これを機能させるために何時間も費やした後。どこから手を付けていいのかわからないという気持ちはまだあります。誰かが私を正しい方向に向けることができますか?. HTMLUnit に戻ってもっと時間を費やすべきでしょうか? このようなサイトのベストプラクティスは何ですか?

ありがとう

4

3 に答える 3

2

あなたが参照しているページは AJAX を使用していないようです。代わりに、AJAX として参照しているのは POST 要求です (URL で渡されるものとは対照的に、GET 要求です)。それらの違いについて読んでみることをお勧めします。何が起こっているのかを理解するよう努めてください。非常に柔軟性のないサードパーティ製のツールに頼るよりも重要です。

Firebug をインストールし、POST リクエストで送信される変数を監視します。次に、お気に入りのプログラミング言語で同じことを行います。POST 要求の応答 HTML を解析して、必要な情報を取得します。

また、非常に多くの異なるソリューションを試してあきらめない努力に対して+1.

于 2011-05-25T23:59:47.520 に答える
2

私は本当にNode.js atm (サーバー側の JavaScript です。詳しくない場合に備えて) に夢中なので、それをお勧めします。それを使用してサイトをスクレイピングすることの素晴らしい点は、jQuery またはお気に入りの JS フレームワークを使用して、必要な情報を解析するすべての作業を実行できることです! 開始するには、次のリソースを参照してください。

http://blog.dtrejo.com/scraping-made-easy-with-jquery-and-selectorga

https://github.com/tmpvar/jsdom

https://github.com/chriso/node.io/wiki/Scraping

https://github.com/joshfire/node-crawler

于 2011-05-25T23:51:40.243 に答える
1

内部で HTMLUnit を使用する JRuby ライブラリである Celerity (http://celerity.rubyforge.org) が、「Web 経由のデータ取得」のための非常に堅牢なソリューションであることがわかりました。

Ruby である Celerity は、本格的な Java (HTMLUnit) と比較して、開発がはるかに高速であることがわかりました。また、Celerity の HTMLUnit の「ラッピング」により、より重い作業を行う必要があったため、HTMLUnit にドロップダウンすることができました。

私は、DHTML が豊富で、Ajax を利用しているサイトで成功を収めています。そして、Ajax 応答を待機するためにいくつかの sleep() 呼び出しを使用している間、すべてが期待どおりに機能しました。

試してみる!

于 2011-05-25T23:52:06.553 に答える