0

これが、個人的なビットをスクラブした私のスクリプトです。

import urllib, urllib2, cookielib

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
resp3 = opener.open('https://www.mynexia.com/login')
resp4 = resp3.read().split('input name=\"authenticity_token\" type=\"hidden\" value=\"')
resp5 = resp4[1].split('\" /></div>')
login = 'website username'
password = 'website pass'
authenticity_token = resp5
login_data = urllib.urlencode({'login' : login, 'password' : password,'authenticity_token' : authenticity_token})
opener.open('https://www.mynexia.com/session', login_data)
resp = opener.open('https://www.mynexia.com/houses/ourstaticaccountpage/climate')
resp1 = resp.read().split('<div class=\"temperature\"><span>')
resp2 = resp1[1].split('</span></div>')

int(resp2[0])


if resp2[0] > 75:

    import smtplib
    import string
    SUBJECT = "Temperature is rising!"
    TO = "helpdesk@whoever.blah"
    FROM = "me@gmail.com"
    text = "Temperature is " + resp2[0]
    BODY = string.join((
        "From: %s" % FROM,
        "To: %s" % TO,
        "Subject: %s" % SUBJECT,
        "",
        text
        ), "\r\n")
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login("me@gmail.com", "gmailpass")
    server.sendmail(FROM, [TO], BODY)

elif resp2[0] <= 75:

    import smtplib
    import string
    SUBJECT = "Temperature is ok"
    TO = "helpdesk@whereever.blah"
    FROM = "me@gmail.com"
    text = "Temperature is " + resp2[0]
    BODY = string.join((
        "From: %s" % FROM,
        "To: %s" % TO,
        "Subject: %s" % SUBJECT,
        "",
        text
        ), "\r\n")
    server = smtplib.SMTP('smtp.gmail.com', 587)
    server.ehlo()
    server.starttls()
    server.ehlo()
    server.login("me@gmail.com", "gmailpass")
    server.sendmail(FROM, [TO], BODY)

値が何であっても常に評価さresp2[0]れることを除いて、正常に動作します。> 75このスクリプトのポイントは、一部の機密性の高いマシンが実行されている部屋が75度よりも暖かくなったときに警告することです。私がスクレイピングしているWebサイトでは、90を超えた場合にのみアラートを送信できます。それまでに、マシンがダウンするリスクがあるため、早めにアラートを送信したいと思いました。15分ごとにcronjobを使用して実行し、if-elseステートメントが正しく機能するようになったら、「すべてがa-」を送信する代わりに、ログファイルに<=ダンプするだけです。了解しました。」私が基本的な数学で失敗する理由について何か提案はありますか?私に問題はありint(resp2[0])ますか?デフォルトでは10進数ではありませんか?

4

2 に答える 2

0

resp2 [0]の値をログに記録して、取得している値を確認しましたか?シンプルな

print resp2[0]

デバッグ中...

于 2012-03-21T20:51:59.730 に答える
0

resp2文字列のリストです。文字列が整数より大きい。int比較する前にそれを呼び出す必要があります。

実際、あなたが電話をかけているようintですが、結果に対して何もしていません。を実行しても、の内容は整数int(resp2[0])に変換されません。変換された値を返すresp2[0]だけです。何も割り当てないと、捨てられてしまいます。それを新しい変数に割り当ててから、その変数をステートメントで使用する必要があります。if

于 2012-03-21T20:46:33.687 に答える