2016-06-23 6 views
0

私はPythonで新しいです。私は「チェンジ・セクター」プログラムをしたい。これを行うには、私はウェブサイトからURLコンテンツを取得しています。いくつかのアルゴリズムでハッシュします(md5のように)。最初のハッシュがウェブサイトのコンテンツの2番目のハッシュと一致しない場合私は自分自身をtweetingしています。私はcronjobを使用します。しかし、私はそれらの間でハッシュを比較することはできません。私は古いハッシュを保つ必要があります。そしてこの古いハッシュは新しいハッシュと比較されなければなりません。しかし、私のコードは古いハッシュを保持できません。毎回私はコードを実行しました。それはとにかくtweetingです。私はこれを望んでいませんでした。だから私はリアルタイムの比較方法を持っている。だからこれをどうやって?データベースを作成する必要はありますか?または配列を使用する必要がありますか?私のコード;ハッシュを比較し、各ハッシュを評価する

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') 
+2

あなたはそれをあなたがプログラムを実行し、次回にアクセスできる場所古いが、どこかに持って保管する必要があります。それがファイルであろうとデータベースであろうとなかろうと、それは本当に重要ではありません。 – Suever

+0

答えをありがとう。しかし、どのようにこれらのハッシュを交換するのですか?新しいハッシュは古いハッシュになります。そしてこの新しいハッシュは古いハッシュになります。スーは混乱している? –

+0

プログラムの最後に、新しいハッシュをファイルに保存します。そして、プログラムの初めに、このハッシュをファイルからロードし、 'oldhash'という名前の変数に格納します。 – Suever

答えて

0

あなたがループしているので、ちょうどループの外で最初のハッシュを作成し、内部の新しいハッシュと比較し、最も最近の新しいハッシュへ前の変数を更新:

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 
+0

しかし、今でも「指定されたユーザーは何かを投稿しています」というツイートがあります。どうすればこの問題を解決できますか? –

+0

@OğuzhanKARAASLAN、私はtypoを持っていましたが、hexdigestを呼び出すのを忘れました –

+0

しかし、もし私がhexdigestを呼び出さなければ、 "md5"ハッシュをどのように比較できますか?それはすべてハッシュについてです。ではない? –

関連する問題