【问题标题】:How to wait till web page is fully loaded python如何等到网页完全加载python
【发布时间】:2016-01-15 15:27:56
【问题描述】:

我尝试使用一个唯一的 class_name,它仅在页面完全加载后出现,但出于其他原因,它在出现在屏幕上之前出现

try:
    WebDriverWait(self.browser, 20).until(EC.element_to_be_clickable((By.CLASS_NAME, 'selo-fechado'))
except:
    pass

除了 time.sleep(4) 之外,我还能做什么才能等到页面加载完毕?

【问题讨论】:

  • 页面是否使用 AJAX 调用或某些 Javascript 操作 DOM? Selenium 通常会默认尝试等待页面加载,因为driver.get() 是一个阻塞语句。但是 AJAX 和其他 JS 脚本仍然可以操作 DOM,这可能会导致您的问题。
  • 可能是this?
  • 我担心页面确实使用了 java 脚本,我该怎么做才能通过呢?

标签: python html selenium webpage


【解决方案1】:

我通过刷新网站并开始查看项目以及最后可见的内容解决了这个问题

【讨论】:

    【解决方案2】:

    这是我发现的最好和最可靠的解决方案:

    import sys  
    from PyQt4.QtGui import *  
    from PyQt4.QtCore import *  
    from PyQt4.QtWebKit import *  
    from lxml import html 
    
    #Take this class for granted.Just use result of rendering.
    class Render(QWebPage):  
      def __init__(self, url):  
        self.app = QApplication(sys.argv)  
        QWebPage.__init__(self)  
        self.loadFinished.connect(self._loadFinished)  
        self.mainFrame().load(QUrl(url))  
        self.app.exec_()  
    
      def _loadFinished(self, result):  
        self.frame = self.mainFrame()  
        self.app.quit()  
    
    url = 'http://pycoders.com/archive/'  
    r = Render(url)  
    result = r.frame.toHtml()
    #This step is important.Converting QString to Ascii for lxml to process
    archive_links = html.fromstring(str(result.toAscii()))
    print archive_links
    

    更多信息在这里:https://impythonist.wordpress.com/2015/01/06/ultimate-guide-for-scraping-javascript-rendered-web-pages/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-04
      相关资源
      最近更新 更多