【问题标题】:I've tried the following infinite loop in my code, but it seem not work我在我的代码中尝试了以下无限循环,但它似乎不起作用
【发布时间】:2014-08-19 07:03:54
【问题描述】:

我已经在我的代码中尝试了以下无限循环,但它似乎不起作用,请帮助,谢谢!

代码:

import time
import sys
from qt4 import QtWebKit
from qt4 import QtCore
from qt4 import QtGui
from bs4 import BeautifulSoup

while True: 

header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0'} #Needed to prevent 403 error on Wikipedia

class Render(QtWebKit.QWebPage):
    def __init__(self, url):
        self.app = QtGui.QApplication(sys.argv)
        QtWebKit.QWebPage.__init__(self)
        self.loadFinished.connect(self._loadFinished)
        self.mainFrame().load(QtCore.QUrl(url))
        self.app.exec_()

    def _loadFinished(self, result):
        self.frame = self.mainFrame()
        self.app.quit()

url = 'http://youneednothing.com/'
r = Render(url)
content = unicode(r.frame.toHtml())

soup = BeautifulSoup(content)
print soup
time.sleep(10)

我已将以下内容用于循环我的代码,但它似乎不起作用。

 import time

 Wihle True:
 [my code]
 time.sleep(10)

【问题讨论】:

  • 究竟什么“不起作用”?
  • IndentationError: 需要一个缩进块
  • 嗯.. 很清楚了。
  • 我不知道要修复,因为我已经检查过语法没问题,当我取出所有循环代码时,我的代码工作正常!
  • while True: 之后的行需要缩进,你也拼错了。

标签: python


【解决方案1】:

试试这个,这是一个无限循环:

while True:
    print soup
    time.sleep(10)

在 python 中,您必须使用制表符或空格来定义代码块。在这种情况下,print souptime.sleep(10) 组成了while True: 下方的块,从而定义了需要无限循环的代码。

查看有关 while 和其他控制流语句的 Python 教程,例如 3.2 First Steps Towards Programming(第二个要点)。

【讨论】:

    【解决方案2】:

    不需要每次都执行类。

    import time
    import sys
    from qt4 import QtWebKit
    from qt4 import QtCore
    from qt4 import QtGui
    from bs4 import BeautifulSoup
    
    
    
    header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0'} #Needed to prevent 403 error on Wikipedia
    
    class Render(QtWebKit.QWebPage):
        def __init__(self, url):
            self.app = QtGui.QApplication(sys.argv)
            QtWebKit.QWebPage.__init__(self)
            self.loadFinished.connect(self._loadFinished)
            self.mainFrame().load(QtCore.QUrl(url))
            self.app.exec_()
    
        def _loadFinished(self, result):
            self.frame = self.mainFrame()
            self.app.quit()
    
    while True: 
        url = 'http://youneednothing.com/'
        r = Render(url)
        content = unicode(r.frame.toHtml())
    
        soup = BeautifulSoup(content)
        print soup
        time.sleep(10)
    

    【讨论】:

      【解决方案3】:

      Python 使用缩进来分隔不同的代码块。所以你需要在 while 语句之后缩进代码,就像你在类定义中所做的那样。

      所以代码应该是这样的:

      while True:
          [your code]
          time.sleep(10)
      

      【讨论】:

        【解决方案4】:

        这是对您的代码的建议,因为我认为其他答案就足够了,但这很方便。 在您将内容导入模块的顶部,您拥有:

        from qt4 import QtWebKit
        from qt4 import QtCore
        from qt4 import QtGui
        

        这可以细化为:

        from qt4 import QtWebKit, QtCore, QtGui
        

        在导入时,在一行中导入多个内容并不“好”,from ... import ..., ..., ... 技术除外。 只是一个方便的提示:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-28
          • 2015-10-22
          • 2021-03-31
          • 1970-01-01
          • 2013-12-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多