2016-03-30 9 views
7

लोड करने में बहुत लंबा समय लगता है मैं अपने वेबड्राइवर के रूप में फ़ैंटॉमजेएस का उपयोग करता हूं। कभी-कभी वेबपृष्ठ लोड करने में बहुत लंबा समय लगता है लेकिन मुझे नहीं पता किसेलेनियम वेबड्राइवर पृष्ठ

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 

पृष्ठ को लोड करने में लगभग 86s लग गए। एक ब्राउज़र में, वेबपृष्ठ को कई सेकंड में लोड किया जा सकता है और मुझे नहीं पता कि वेबड्राइवर फ़ैंटॉमजेएस इतने लंबे समय क्यों लेता है। इसके साथ गलत क्या है?

उत्तर

12

एक "लंबित" स्क्रिप्ट लगातार चल रही है।

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) 

प्रिंटों समाचार शीर्षक (साबित है कि अब आप तत्वों का पता लगाने और पृष्ठ पर कार्रवाई कर सकते हैं):: मुझे क्या होता पृष्ठ लोड समय समाप्ति स्थापित करने के लिए, TimeoutException जारी करके window.stop() संभाल है

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

यह वास्तव में काम करता है और मैं अपने कार्यक्रम से सभी तत्वों का पता लगा सकता हूं। तो, क्या 'लंबित' लिपि डाउनलोड करने का समय बर्बाद हो गया था? यदि कोई टाइमआउट है, तो डाउनलोड करना और प्रतिपादन करना बंद करना, केवल उस वेब पेज को वापस करना जो पहले से ही प्रस्तुत किया गया है, है ना? मुझे नहीं पता कि मुझे बिंदु मिल गया है या नहीं। और वास्तव में धन्यवाद! – SimmerChan

+0

@ सिमररहान हाँ, इस समाधान के पीछे यह विचार है - लंबित अनुरोधों को रोकने के लिए 'window.stop()' का उपयोग करें। – alecxe

संबंधित मुद्दे