我正在编写这个小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)
我的预期输出是获得帖子(我做了)并打印出来。这很好。唯一的问题是我只想让它打印一次,当它定期检查网站时,它会多次打印,我不知道为什么。 提前谢谢大家!
答案 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
实际上会老了。