2016-03-30 8 views
7

私はWebdriverとしてPhantomJSを使用しています。 Webページを読み込むのに時間がかかりすぎる場合がありますが、理由はわかりません。セレンのドライバーがページを読み込むのに時間がかかります

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 

ページを読み込むのに約86秒かかりました。ブラウザでは、Webページを数秒で読み込むことができます。なぜなら、Webdriver PhantomJSがこのような長い時間を費やす理由はわかりません。どうしたの?

答えて

12

"pending"スクリプトが継続的に実行されています。 (あなたが今の要素を検索し、ページ上のアクションを作ることができることを証明)

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) 

プリントニュースのタイトル:私は何だろうと、TimeoutExceptionwindow.stop()発行することにより、ハンドル、ページの読み込みタイムアウトを設定することです

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

本当に機能し、私のプログラムからすべての要素を見つけることができます。だから、「保留中の」スクリプトをダウンロードするのに時間が無駄でしたか?タイムアウトがある場合は、ダウンロードとレンダリングを停止し、既にレンダリングされているWebページを返すだけです。私はポイントを得るかどうか分からない。そして本当にありがとう! – SimmerChan

+0

@SimmerChanええ、それはこの解決策の背後にあるアイデアです - 保留中のリクエストを止めるために 'window.stop()'を使います。 – alecxe

関連する問題