比较哈希值并评估每个哈希值

时间:2016-06-23 12:21:08

标签: python twitter hash python-requests string-comparison

我是Python的新手。我想做一个" changedetector"程序。为此,我从网站上获取网址内容。并使用一些算法进行散列(如md5)。如果我们的第一个哈希值与网站内容的第二个哈希值不匹配。我自己发推文。我会用cronjob。但我无法比较它们之间的哈希值。我必须保留旧哈希。并且这个旧哈希必须与新哈希进行比较。但是我的代码不能保留旧哈希。所以每次我执行代码。无论如何它都是推特。我不想要这个。所以我有实时比较方法。那怎么做?我需要创建数据库吗?还是我需要使用数组?我的代码;

    import hashlib
    import requests
    from twython import Twython


    link = "https://blablabla.net"
    f = requests.get(link)
    content = str(f.text)
    a= hashlib.md5()
    a.update(content.encode('utf-8'))
    sabithashdegeri= a.hexdigest
    print(a.hexdigest())

    if sabithashdegeri == a.hexdigest :
    twitter.update_status(status='Specified user () hasnt post anything yet')
    else:
    twitter.update_status(status='Specified user () has post something! Check it on blablabla')

1 个答案:

答案 0 :(得分:0)

由于您处于循环中,只需在循环外创建一个初始哈希并与内部的新哈希进行比较,将prev变量更新为最新的哈希:

import hashlib
from time import sleep

def hsh(txt):
    a = hashlib.md5()
    a.update(txt.encode('utf-8'))
    return a.hexdigest()

def bot(link):        
    f = requests.get(link)
    prev = hsh(f.text)      
    while True:
        f = requests.get(link)
        sabithashdegeri = hsh(f.text)
        if prev == sabithashdegeri:
             twitter.update_status(status='Specified user () hasnt post anything yet')
        else:
             twitter.update_status(status='Specified user () has post something! Check it on blablabla')
             prev = sabithashdegeri
        sleep(10)

我认为你在某处睡觉以节省cpu周期。

在链接上运行代码并用打印件替换twitter更新:

In [52]: link = "https://www.mehmetince.net/"

In [53]: bot(link)
Specified user () hasnt post anything yet
Specified user () hasnt post anything yet
Specified user () hasnt post anything yet
Specified user () hasnt post anything yet
Specified user () hasnt post anything yet
Specified user () hasnt post anything yet
Specified user () hasnt post anything yet
Specified user () hasnt post anything yet