私はPythonで数年間働いていて、最近はいくつかのJavascript(jQueryや依存関係ではなく、単純なJavascript)ブラウザ自動化タスク。ウェブページの下部にあるときにjavascript-scrollを確認する方法(と殺す)
Pythonでの遅延読み込み(Facebookページ、Twitterページ、またはWallmartサイトでさえも)は、fx Seleniumを使用すると簡単です。
Pythonでは、粗い「n」の汚れた解決策が高さチェックとなり、高さが上がらなくなるとwhileループから脱落する可能性があります。ように:
check_height = driver.execute_script("return document.body.scrollHeight;")
while True:
browser.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
height = driver.execute_script("return document.body.scrollHeight;")
if height == check_height:
break
check_height = height
私はChromeのコンソールを使用して同じことをJavascriptで達成しようとしています。これまでの作業のコードは次のようになります。
var scrollToBottom = function() {
window.scrollTo(0, document.body.scrollHeight);
}
var sleep = 1000;
var kill_ID = setInterval(scrollToBottom, sleep);
たsetIntervalは永遠に行くループを開始 - scrollToBottomへの各呼び出しの間に睡眠時間の秒に。そして私は、することができます - 手動 - これ以上のコンテンツが発行してロードされていないときにそれを殺す:
window.clearInterval(kill_ID);
をこれは明らかにこのことについてに行くための最善の方法ではありません。だから手動でスクロール・プロセスを終了させることなく、タスクを達成するためのより良い方法が必要です。
しかし、PythonのロジックはJavascriptで私にとってはうまくいかないようです。誰かが私に、これを達成する方法についての2つの指針を与えるでしょう - 私は - 基本的な仕事ですか?前もって感謝します。
更新: どうやら、このいずれかの簡単な修正がないように、私はローテク溶液で行って、私は(てclearIntervalを誘発する)は、マウスをクリックしたときにスクロールを殺すのEventListenerを追加しました。参考になったコメントについて
window.addEventListener('click', function kill(){window.clearInterval(kill_ID)})
おかげで、誰も:
これが機能するので、余分なコードスニペット - - FXブックマークレットとしてだけであることが必要です。
ありがとう、Tim。私の問題が不明な場合は申し訳ありません。骨に:ロードするコンテンツがなくなるまでスクロールしたいこれが起こると、私はスクロールを殺したい。あなたが与える最初の例で私はそれについてどうやって行くのですか?ありがとう。 – jlaur
「スクロールを殺す」という言葉が混乱しています。これ以上コンテンツをロードしないと、ユーザーはページの下をスクロールできなくなり、実際には 'スクロールを殺します。 ' –
あなたは間違っているようです。投稿したコードは永遠に繰り返されます。一番上にスクロールしようとすると(またはちょっと上に)スクロールすると、1秒後にボトムに戻ります。私はsetInterval関数がclearIntervalの対応を持つ必要があるのではないかと思います... – jlaur