2016-04-13 20 views
2

'u kullanarak aşağı kaydırmaz. Aşağı kaydırma işlemini yapmak için selenium/phantomjs'teki en basit yolu kullanıyordum. Kodda her şey iyi görünüyor, ama işe yaramıyor. Her belge kaydettikten sonra "document.body.scrollHeight" yazdırmayı denerim. Ben herhangi biri bana burada ne yapabilirim üzerinde bir ipucu verebilir "twitter.com/XXXXX"phantomjs, window.scollTo

gibi belirli bir kişinin twitter sayfaya göz ediyorum

(örneğin height 10532 kalır)? İşte

kod phantomjs

kullanıyorum webdriver geçerli:

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

sizi Var phantomjs bile bir kaydırma var mı kontrol ettim? Kesinlikle başsız bir tarayıcı kaydırmaz ... – evolutionxbox

cevap

3

ben artırmak için kaydırma yüksekliği bekleyin ve kullanmak document.documentElement.scrollHeight yerine:

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

Yardımın için teşekkürler! Bu şekilde denedim ama daha iyi sonuç alamadım, bekleme süresini 60 saniyeye çıkarmaya çalışıyorum ama yine de zaman aşımı istisnası artıyor. Her şeyin iyi olduğu ekran görüntüsüne baktım, doğru sayfaya bakıyor. Tek yapması gereken, aşağıya doğru kaydırmaktır, ama yapmaz. Ağ bağlantımın iyi olduğuna inanıyorum. Çok garip bir problem. –

+0

Bu örnekte sayfa kaydırılabilir olmamasına rağmen, benimle iyi çalışıyor. URL'yi daha uzun bir sayfa ile güncelledim. –