- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:perlでのクローリングについて)
perlでクローリングする方法と速度向上のためのヒント
このQ&Aのポイント
- perlを使った簡単なクローラーを作成する際に、lwpとSocketのどちらを使うか迷っている方に、それぞれの特徴と速度について解説します。
- lwpを使ってサイズの大きいサイトからデータを取得する際にCPU使用率が高くなってしまう問題について、解決法を紹介します。
- 複数のサイトからデータを同時に取得する方法について解説します。URLの一覧を読み込んでforループで回す方法ではなく、効率的な方法を紹介します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
1. Socketモジュールを使うと仮定して、LWPと比較した場合、コネクトなどの前準備が少し必要なぐらいで、それほど難しくはありません。 たとえば以下のように、オープンなど前準備をし、ファイルハンドルに書き出します。 print SOCKET "GET /index.html HTTP/1.0\r\n"; print SOCKET "Host: www.okweb.jp\r\n"; print SOCKET "\r\n"; 速度については、LWPも内部的にはソケットで通信していることを考えれば、よりきめ細かな無駄のない処理をさせることができる分、速いと思います。 2. Socketで「HEAD」を送信するとデータサイズが返ってくるので、それに応じて処理してはどうでしょうか。 そしてデータ取得の際に、キャッシュされたデータをファイル保存しながら受信タイミングを調整すれば、メモリ、CPU使用率も調整できると思います。 3. Socketを複数オープンすれば可能です。しかし当然その分メモリやCPUを食いますが。
お礼
お返事が遅れてしまい申し訳ございません。 詳しいご説明ありがとうございました。 さっそくSocketを使ってつくり始めています。 2,3についても疑問がはれてすっとしてます。