-1

私は、ウェブサイト www.fmylife.com に新しい投稿を取得するこの小さな python プログラムを書いています。このプログラムでこれらの新しい投稿を印刷したいと考えています。始めたばかりでも簡単な作業ですが、何らかの理由で同じ投稿の印刷を停止するコードを取得できません。

import urllib.request,time

def getFml():
    rawfml = urllib.request.urlopen("http://www.fmylife.com")
    refml = rawfml.read()
    fml = refml.decode("utf8")
    rawfml.close()
    return fml
def parseFml(fml):
    fml=fml.split('Today,')
    fml=fml[1]
    for char in fml:
        if char in '0123456789<>/="#()-;:"\',':
            fml=fml.replace(char,'')
    fml=fml.split('FMLapdiv')
    fml=fml[0]
    fml=fml.split('aa')
    fml=''.join(fml)
    return fml
    listy=   ['date','left_parta','votej','idvotea','onclickvote','jTipa','comments','right_partp','fmllink','clear','post','hrefwork','class','dyn','javascript','div','classright_partp','hrefmiscellaneous','classdyncomments''div','article','idpa','classclear','classpost','hreflove','classfmlling','FMLap','classdate','classleft_parta','id_','nameresume','classjTipa','span','classdyn-commentsspan','classright_partpspan','classdyn-vote-j','idcotea','hrefjavascript;:','classfmllink','href']
for x in range(len(listy)):
    fml=fml.replace(listy[x],'')
    return fml
oldfml=''
count=0
while True:
    fml=getFml()
    fml=parseFml(fml)
    count=count+1
    if count>1:
        oldfml=fml

    if oldfml == fml:
        time.sleep(300)
    else:
        print('Today,'+fml)
        time.sleep(300)

私の予想される出力は、投稿を取得して(私が行った)、それを印刷することでした。それはうまくいきます。唯一の問題は、投稿を一度だけ印刷したいということです.Webサイトを定期的にチェックすると、何度も印刷されてしまい、その理由がわかりません. よろしくお願いします!

4

1 に答える 1

2

コードのこの部分では:

while True:
    fml=getFml()
    fml=parseFml(fml)
    count=count+1
    if count>1:
        oldfml=fml
    if oldfml == fml:
        ...

同等性を確認するoldfml=fml 前に割り当てます。したがって、それらは常に等しいです。

次の修正を提案します。

while True:
    if count>1:
        oldfml=fml
    count=count+1
    fml=getFml()
    fml=parseFml(fml)
    if oldfml == fml:
        ...

このように、oldfml実際に古くなります。

于 2012-06-11T11:32:57.570 に答える