2016-03-30 24 views
7

Ben web tarayıcım olarak PhantomJS kullanıyorum. Bazen bir web sayfasını yüklenmesi çok uzun sürüyor ama bu sayfayı yüklemek için 86s hakkında sürmesinin nedeniselenium webdriver bir sayfa yüklemek için çok uzun sürüyor

import time 
from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 

dcap = dict(DesiredCapabilities.PHANTOMJS) 
dcap["phantomjs.page.settings.userAgent"] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36' 
driver = webdriver.PhantomJS(service_args=['--load-images=no'], desired_capabilities=dcap) 
t=time.time() 
driver.get('http://www.tibetculture.net/2012zyzy/zx/201509/t20150915_3939844.html') 
print 'Time consuming:', time.time() - t 

Bilmiyorum. Bir tarayıcıda, web sayfası birkaç saniye içinde yüklenebilir ve webdriver PhantomJS'nin neden bu kadar uzun sürdüğü hakkında hiçbir fikrim yok. Bunun nesi var?

cevap

12

Sürekli çalışan bir "bekleyen" komut dosyası var. (Şimdi elemanları bulmak ve sayfadaki eylemler yapabilir kanıtlayan)

from selenium.common.exceptions import TimeoutException 

t = time.time() 
driver.set_page_load_timeout(10) 

try: 
    driver.get('http://www.tibetculture.net/2012zyzy/zx/201509/t20150915_3939844.html') 
except TimeoutException: 
    driver.execute_script("window.stop();") 
print('Time consuming:', time.time() - t) 

print(driver.find_element_by_id("NewsTitle").text) 

Baskı haber başlığı: Ne yapacağını TimeoutExceptionwindow.stop() düzenlenmek suretiyle idare, sayfa yükleme zaman aşımı ayarlamaktır

Time consuming: 10.590633869171143 
让藏医药走出雪域高原 
+0

Gerçekten çalışıyor ve tüm öğeleri programımdan bulabilirim. Yani, 'bekleyen' komut dosyasını indirmek için harcanan zaman mıydı? zaman aşımı varsa, indirmeyi ve oluşturmayı durdurun, zaten oluşturulmuş olan web sayfasını döndürün, değil mi? Anladığımdan emin değilim. Ve gerçekten teşekkürler! – SimmerChan

+0

@SimmerChan evet, bu çözümün arkasındaki fikir budur - bekleyen istekleri durdurmak için window.stop() işlevini kullanın. – alecxe

İlgili konular