在Python 3中比较字符串

时间:2012-06-11 11:00:30

标签: python parsing semantics repeat

我正在编写这个小python程序,它将在www.fmylife.com网站上发布新帖子,我希望这个程序能够打印这些新帖子。即使我刚刚开始,这是一项简单的任务,但由于某些原因,我无法让代码停止打印相同的帖子。

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)

我的预期输出是获得帖子(我做了)并打印出来。这很好。唯一的问题是我只想让它打印一次,当它定期检查网站时,它会多次打印,我不知道为什么。 提前谢谢大家!

1 个答案:

答案 0 :(得分: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实际上会老了。