2016-04-13 8 views
2

したがって、スクロールダウンの動作を行うために、最も基本的な方法をセレン/ファントムで使用していました。 コードではすべてうまくいくようですが、うまくいきません。 "document.body.scrollHeight"を印刷しようとしましたが、スクロールするたびに同じままです。 「twitter.com/XXXXXは」phantomjsはwindow.scollToを使用してスクロールしません

いずれかが私に私がここに何ができるかのヒントを与えることができますように、私は特定の人のTwitterのページを閲覧してい

(例えば高さが10532のまま)?

私が使用しているwebdriverをここではコードです

phantomjsです:

def getfullpage(url): 
    print "getting fullpage..." 
    driver.get(url) 
    time.sleep(2) 
    reloads = 3000 
    pause = 0 
    driver.save_screenshot("what'shappening.jpg") 
    for times in range(reloads): 
     driver.execute_script("window.scrollTo(0,document.body.scrollHeight);") 
     time.sleep(pause) 
     newheight = driver.execute_script("return document.body.scrollHeight") 
     print newheight 
    page = driver.page_source.encode("utf-8","ignore") 
    return page 
+0

はあなたを持っていますファントムズにスクロールさえあるかどうかチェックしますか?確かにヘッドレスブラウザはスクロールしません。 – evolutionxbox

答えて

3

私が代わりにdocument.documentElement.scrollHeightを増加し、使用するスクロールの高さのために待機していました:

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.common.keys import Keys 
from selenium.webdriver.support.ui import WebDriverWait 

driver = webdriver.PhantomJS() 
wait = WebDriverWait(driver, 20) 

driver.get("https://twitter.com/barackobama") 
time.sleep(1) 

# scroll the height 
height = driver.execute_script("var h=document.documentElement.scrollHeight; window.scrollTo(0, h); return h;") 

# wait for the scroll height to increase 
wait.until(lambda drv: drv.execute_script("return document.documentElement.scrollHeight;") > height) 

# display the final scroll height 
print driver.execute_script("return document.documentElement.scrollHeight;") 
+1

助けてくれてありがとう!私はこの方法を試みたが、より良い結果を得られなかった、私は60秒まで待機時間を上げようと試みるが、それでも例外のタイムアウトが発生している。私はスクリーンショットを見て、すべてがうまくいけば正しいページを見ている。それがしなければならないのは、スクロールダウンだけですが、そうではありません。私は私のネットワーク接続が正常だと思う。非常に奇妙な問題。 –

+0

この例のページはスクロールできませんが、うまく動作します。長いページでURLを更新しました。 –

関連する問題