お世話になります。
現在、下記の環境にてEmbeddedWbを使用しAmazonからソースを
取得しようとしているのですが、EmbeddedWbにて表示してから
ソースを取得している点やAmazon自体のソースが長い事もあり
例えば、10ページから1つずつASINを取りだすのに40秒程かかります。
個人的には、この半分の時間で取得できるのではないかと思い
HTTPGetやTELNET(Delphiから利用)を利用してテストして見ましたが
思い通りの速度が得られません。
何か良い方法はないでしょうか?
どなたかご存じの方、ご教示願います。
環境:
OS:Windows7,Windows8,Windows2012
Delphi XE
以上、よろしくお願い致します。
早いかは、わかりませんが、
IndyのTIdHTTPでGet メソッドを使うのは、いかがですか?
> 個人的には、この半分の時間で取得できるのではないかと思い
この根拠は何ですか?
igy さん
ありがとうございます。
>IndyのTIdHTTPでGet メソッドを使うのは、いかがですか?
最初に記載したHTTPGetというのが同じものになりますので
そちらでは既にテストしております。
通りすがり さん
>> 個人的には、この半分の時間で取得できるのではないかと思い
>この根拠は何ですか?
Unix系と比べるべきではないと思うのですが、Unix上で同じような事を
シェルスクリプトで行うと20秒もかかりません。
cuiとguiを比べるのもそもそも違いが出るのは当たり前ですが
windows+guiというのは、Macやサーバ使われる方は感じておられると
思いますが、遅すぎてどうしようもないですね。
ダウンロードとなると明らかに変わってきますので、Windowsでも
どうにかすれば改善できるのではないかと考えてしまいます。
コマンドレベルで実装できておられる方がおららればお願い致します。
とすると、EmbeddedWbは使うべきでないのかもしれません。
HTML表示は必要なく、ソース取得のみで構いません。
私自身もwget辺りでもう少し模索しようと思いますが、何か良い案があれば
ご教示願います。
ちなみに、その40秒のうち、
ダウンロードに何秒かかり、
1つずつASINを取りだすのに何秒かかっていますか?
>>> 個人的には、この半分の時間で取得できるのではないかと思い
>>この根拠は何ですか?
>Unix系と比べるべきではないと思うのですが、Unix上で同じような事を
>シェルスクリプトで行うと20秒もかかりません。
なるほど、スクリプトとEmbeddedWbのようなGUIパーツをくらべているのですね。
>cuiとguiを比べるのもそもそも違いが出るのは当たり前ですが
当たり前ですね。
純粋にダウンロードだけ、パースだけをコンソールプログラムで実装してみるテスト、というのは有効だと思います。
igyさんも書かれていますが、とりあえずダウンロードだけをIdHttpで行ってみて、所要時間を計ってみてはいかがでしょう?
また*nixのスクリプトでもダウンロードだけの時間を計ったらどの程度違いますか?
igyさん、通りすがりさん
ご返事が遅くなって申し訳ありません。
EmbeddedWbで、ページ取得に5秒。ASIN解析に5秒掛かっているようです。
ページ表示自体もなるべく簡略化して画像表示させていなかったりなど
しているのですがそれでも5秒掛かります。
Unix系のスクリプトでは、ページ取得に2秒。ASIN解析に1秒かかっていないようです。
やはりスクレイピングでは遅いという事でAPIの方を使用した方がいいようです。
完全なサンプル等によるテストができていないのでなんとも言えませんが
取得文字数は少しでいいのでAPIに切り替えた方がいいですね。
デメリットとしては、API変更等があると対応しないといけないところが
欠点ですが。
> とりあえずダウンロードだけをIdHttpで行ってみて、所要時間を計ってみてはいかがでしょう?
はどうですか?EmbeddedWbのようなGUIパーツでは、ダウンロードだけの純粋な所要時間は
計りようがないですから(ダウンロード中にもHTMLの解析が行われるため)。
まぁAPI経由でいいならそっちのほうが望ましいと思いますけど。
>EmbeddedWbで、ページ取得に5秒。ASIN解析に5秒掛かっているようです。
“40秒程かかります。”と最初に書かれていましたが、残りの30秒は何にかかっているのですか?