1

さて、私は最初にhtmlをチェックして文字列にダウンロードし、次に2秒ごとに再度チェックし、変更されている場合は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

関数にグローバルhtml変数を設定するようにインタープリターに指示する必要がありfirstcheck()ます。

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 に答える