4

現在、Python の Firefox Driver である Selenium を使用してスクロールをハードコーディングしていますが、ページをスムーズに上下にスクロールする方法はありますか? ページ内の画像が読み込まれると、ページは通常の 20 倍に拡大する可能性があります。

ページのどの部分も見逃さないように、何度も上下にスクロールする必要があります。

現在の方法は効率的ではなく、ページの一部にスクロールしないことがあります。以下は私の現在のコードです

 browser = webdriver.Firefox()
browser.get(link)

browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.4);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.5);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.7);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.8);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.2);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.3);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.5);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.7);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/4.9);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/5.2);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/5.1);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/5.8);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.7);")
        time.sleep(0.2)
        browser.execute_script("window.scrollTo(0, document.body.scrollHeight/50);")
        time.sleep(0.2)
4

2 に答える 2

8

PythonでSeleniumを使用している場合、これを使用できます...

scheight = .1
while scheight < 9.9:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight/%s);" % scheight)
    scheight += .01

または、それらの線に沿った何か。ifブレーキを追加しscheightて、 内の特定の場所でデータをキャプチャできますwhile。or の+=繰り返しを好きなようにします。.01 を使用したので、スクロールを視覚的に確認できました。そうしないと、タイムアウトが必要になり、途切れ途切れに見えます。必要なものによって異なります。

于 2014-03-06T00:50:49.483 に答える
1

すべてのスクロールを 1 回のショットで実行できますか?

 browser.execute_script("window.scrollTo(0, document.body.scrollHeight/3.5);window.scrollTo(0, document.body.scrollHeight/3.7);")

同じ実行スクリプト呼び出しですべてのスクロール呼び出しをリストするだけです。

于 2013-11-06T04:17:07.517 に答える