1

好吧,我有这段代码应该通过首先检查并将html下载到字符串中来检查html是否更改,然后每两秒再次检查一次并打印html是否已更改。问题是脚本说它一直在改变,并不断给我相同的 html 代码。

 #!/usr/bin/env python

import time

start = time.time()
from urllib.request import urlopen
data = str
html = str
def firstcheck():
    url = 'http://www.hacker.org/challenge/misc/minuteman.php'
    hogniergay = urlopen(url)
    data = hogniergay.read()
    hogniergay.close()
    html = data

def secondcheck():
    url = 'http://www.hacker.org/challenge/misc/minuteman.php'
    hogniergay = urlopen(url)
    data = hogniergay.read()
    hogniergay.close()
    if not html == data:
        print(data)

while True:
    secondcheck()
    time.sleep(2)

print ("it took", time.time() - start, "seconds.")

提前致谢;)

4

2 回答 2

1

您需要告诉解释器在firstcheck()函数中设置全局 html 变量。

def firstcheck():
    url = 'http://www.hacker.org/challenge/misc/minuteman.php'
    hogniergay = urlopen(url)
    data = hogniergay.read()
    hogniergay.close()
    global html
    html = data

现在该secondcheck()函数正在检查 html 值“str”。

于 2012-07-04T19:46:11.953 回答
1

看起来你根本没有调用 firstcheck,所以 html 总是会是 str。您可以通过将 while True 内的块替换为:

while True:
    firstcheck()
    secondcheck()

但是有一个看起来像这样的脚本会更干净

while True:
    hogniergay = urlopen(url)
    result = hogniergay.read()
    hogniergay.close()
    if result != current:
        print (result)
        current = result
    time.sleep(2)
于 2012-07-04T19:54:38.857 回答