2017-10-11 19 views
-1

私は怠け者だから、私は就職のためにウェブサイトをチェックし、会社のウェブページのすべての仕事を返すので、Pythonプログラムを書いている。ここでPython MD5で同じコンテンツをハッシュすると、異なるハッシュが返される

は、私が現在持っている問題は、私はウェブサイトのhtmlコードの両方をハッシュということである

import requests 
from bs4 import BeautifulSoup 
import sys 
import os 
import hashlib 

reload(sys) 
sys.setdefaultencoding('utf8') 

res = requests.get('WEBSITE URL', verify=False) 
res.raise_for_status() 

filename = "JobWebsite.txt" 

def StartUp(): 
    if not os.path.isfile(filename): 
     try: 
      jobfile = open(filename, 'a') 
      jobfile = open(filename, 'r+') 
      print("[*] Succesfully Created output file") 
      return jobfile 
     except: 
      print("[*] Error creating output file!") 
      sys.exit(0) 
    else: 
     try: 
      jobfile = open(filename, 'r+') 
      print("[*] Succesfully Opened output file") 
      return jobfile 
     except: 
      print("[*] Error opening output file!") 
      sys.exit(0) 

def AnyChange(htmlFile): 
    fileCont = htmlFile.read() 
    FileHash = hasher(fileCont, "File Code Hashed") 
    WebHash = hasher(res.text, "Webpage Code Hashed") 
    !!!!! Here is the Problem 
    print ("[*] File hash is " + str(FileHash)) 
    print ("[*] Website hash is " + str(WebHash)) 
    if FileHash == WebHash: 
     print ("[*] Jobs being read from file!") 
     num_of_jobs(fileCont) 
    else: 
     print("[*] Jobs being read from website!") 
     num_of_jobs(res.text) 
     deleteContent(htmlFile) 
     writeWebContent(htmlFile, res.text) 

def hasher(content, message): 
    content = hashlib.md5(content.encode('utf-8')) 
    return content 

def num_of_jobs(htmlFile): 
    content = BeautifulSoup(htmlFile, "html.parser") 
    elems = content.select('.search-result-inner') 
    print("[*] There are " + str(len(elems)) + " jobs available!") 

def deleteContent(htmlFile): 
    print("[*] Deleting Contents of local file! ") 
    htmlFile.seek(0) 
    htmlFile.truncate() 

def writeWebContent(htmlFile, content): 
    htmlFile = open(filename, 'r+') 
    print("[*] Writing Contents of website to file! ") 
    htmlFile.write(content.encode('utf-8')) 

jobfile = StartUp() 
AnyChange(jobfile) 

(はい、私はコードがしかし、私はちょうどそれが働いて取得しようとしていますjanckyである知っている)、これまでに私のコードですとファイルのHTMLコード。しかし、ハッシュの両方が一致しない、これまでのように、私は確信していないと、コンテンツがファイルに保存されているものかもしれないと推測することができます。ハッシュが離れすぎていないですが、それはまだIf文が毎回失敗し

Breakpoint in Program with hashes

答えて

1

あなたが付属しているスクリーンショットは、2つのハッシュオブジェクトfileHashwebHashの場所を示しています。彼らは別の場所にいるはずです。

実際に比較したいのは、2つのハッシュオブジェクトのうちhexdigest()です。あなたのif文はに変更します。

if FileHash.hexdigest() == WebHash.hexdigest(): 
     print ("[*] Jobs being read from file!") 
     num_of_jobs(fileCont) 

よりハウツーいくつかのために、このother StackOverflow answerを見てみましょう。私はあなたが組み立てアドレスで何を意味するかを見る

+0

は、午前1時のようで、これに取り組んで、ちょうど私の頭の上に飛んでました。ただし、変更後のハッシュ値はまだ異なります。私はそれをもっと見るつもりで、私はそれを修正すれば私は戻って報告します。 –

関連する問題