私はdryscrapeを使用してウェブページをスクラップしています(javascriptのレンダリングされた部分が必要です)、eval_script()を使用して、ページ上のいくつかのjavascriptベースのエラーチェックを抑制しています。私が抑止しているこのスクリプトは基本的に、ユーザーがドロップダウンからのみオプションを選択することが必須となるので、避けなければならないリスナーのonkeyup
です。 これはevalのスクリプトです -dryscrape eval_script()の実行をスピードアップする方法はありますか?
session.eval_script("$('#input_elem').removeAttr('onblur onclick onkeyup');")
今、全体的なスクレイピングは(したがってeval_scriptなし(任意のjavascriptの変更を必要としない、同じドメイン上のページの私の他の実装と比較してはるかに長い時間がかかります) )。
私はtime.time()
を使って少しのプロファイリングを行って、スクリプトがどこで減速していたか、実際にはeval_script()ステップで長い時間がかかっているか確認しました。私は、テーブル要素をループしてるとき
Starting to access at 0.00997018814087
Visited page https://*****/***.aspx 1.30053019524
First eval script run done 5.97628307343
Second eval script run done 9.61053919792
xpath 1 9.6632771492
xpath 2 9.7702870369
xpath 3 9.90402317047
xpath of button to be clicked 9.91756606102
Button clicked 9.97191905975
Second page visited 10.4508111477
Loop 1 else 10.4525721073
xpath 4 10.5330061913
xpath 5 10.6111950874
xpath 6 10.6918411255
xpath 7 10.7721481323
Range begins 10.8208150864
3
Range ends 13.0008580685
が、それは約2秒を取っているが、しかし、2つeval_script()のステップは、組み合わせて、約8秒を取っている - ここでの結果です。 Chrome Devツールコンソールでこれを行うと、同じスクリプトが瞬時に実行されます。 ドライスクレイプの実装に時間がかかるのはなぜですか?