Найти - Пользователи
Полная версия: проверка загрузки html-странички через Python
Начало » Web » проверка загрузки html-странички через Python
1 2
pythonwin
Всем привет!

Можете помочь?

Возможно ли следующее?

есть страничка в интернете, которую нужно проверять периодически (загружается/не загружается, итак каждые полчаса). Если страничка не загружается, то нужно отправить сообщение на E-mail. Это реально сделать на питоне?
slivlen
Можно для этого использовать модуль urllib и cron(ну или любой другой планировщик)
pythonwin
slivlen
Можно для этого использовать модуль urllib и cron(ну или любой другой планировщик)
Спасибо! А можно простенький пример кода?
slav0nic

import urllib
import smtplib
fromaddr = “lala@smtp.ru
toaddr = “lala2@smtp.ru
msg = “serv down! ahtung!”
try:
url = urllib.urlopen("http://ya.ru")
except:
smtp = smtplib.SMTP('smtp.ru')
server.sendmail(fromaddr, toaddrs, msg)
server.quit()


короче в таком духе, тоько екшепшин обрабатывать надо бы
pythonwin
slav0nic, спасибо!

А как определить когда странички нет, но появ-ся такое:

ERROR
The requested URL could not be retrieved

While trying to retrieve the URL: http://lalala.ru:9999/

The following error was encountered:

* Connection Failed

The system returned:

(60) Operation timed out

The remote host or network may be down. Please try the request again.

Your cache administrator is admin@myweb.ru.
Generated Wed, число by лалала.ру (squid/2.5.STABLE11)
slav0nic
ну сам подумай=), если по-простому - то:

if “* Connection Failed ” in url.read():
#send mail

а если сквид возвращает в случае подобной ошибки не 200, то можно и это проанализирловать (но рвдяли он так делает)
pythonwin
проблема в том, когда ставишь "http://myweb.ru:8000" програ думает что страница с ошибкой:

from email.MIMEText import MIMEText
def sendmail():
msg = MIMEText(unicode(“Error”, ‘utf-8’))
msg = ‘Error - page’
you='support@meweb.ru'
me='pc@myweb.ru'
msg = me
msg = you
server = smtplib.SMTP('192.168.0.1')
server.set_debuglevel(1)
server.sendmail(me, you, msg.as_string())
server.quit()
print “Error”
def run():
while True:
try:
conn = httplib.HTTPConnection("http://myweb.ru:8000“)
conn.request(”GET“, ”/index“)
r1 = conn.getresponse()
print r1.status
if r1.status!=200:
sendmail()
elif r1.status==200:
print ”Ok“
else:
print ”Gluk“
except:
sendmail()
time.sleep(60*30)

print ”-"*100
run()


страницка http://myweb.ru:8000/index существует.
pythonwin
немного изменил код, ошибка не изчезла

import time,httplib,smtplib
from email.MIMEText import MIMEText
def sendmail():
msg = MIMEText(unicode(Error', ‘utf-8’))
msg = Error - page'
you='support@myweb.ru'
me='pc@myweb.ru'
msg = me
msg = you
server = smtplib.SMTP('192.168.0.1')
server.set_debuglevel(1)
server.sendmail(me, you, msg.as_string())
server.quit()
print “Error”
def run():
while True:
try:
conn = httplib.HTTPConnection("http://www.myweb.ru“, port=”8000“)
conn.request(”GET“, ”/index“)
r1 = conn.getresponse()
if r1.status!=200:
sendmail()
elif r1.status==200:
print ”Ok“
else:
print ”Gluk“
except:
sendmail()
time.sleep(10)

print ”-"*100
run()
pythonwin
Эту проблему решил

# -*- coding: utf-8 -*-
import time,httplib,smtplib
from email.MIMEText import MIMEText
def sendmail():
msg = MIMEText(unicode('Ошибка на главной странице\n\
перейти на http://myweb.ru:8000', ‘utf-8’))
msg = ‘Error’
you='support@myweb.ru'
me='pc@myweb.ru'
msg = me
msg = you
server = smtplib.SMTP('192.168.0.1')
server.set_debuglevel(1)
server.sendmail(me, you, msg.as_string())
server.quit()
print “Error”
def run():
while True:
try:
conn = httplib.HTTPConnection(“200.200.200.200”, port=“9999”)
conn.request(“GET”, “/index”)
r1 = conn.getresponse()
print r1.status
if r1.status!=200 and r1.status!=403:
sendmail()
elif r1.status==200 or r1.status==403:
print “Ok”
else:
print “Gluk”
except:
sendmail()
time.sleep(10)

print “-”*100
run()


но получаю ошибку:


Traceback (most recent call last):
File “C:\test2\url_smtp_alien.py”, line 38, in ?
run()
File “C:\test2\url_smtp_alien.py”, line 31, in run
sendmail()
File “C:\test2\url_smtp_alien.py”, line 14, in sendmail
server.sendmail(me, you, msg.as_string())
File “C:\Python24\lib\email\Message.py”, line 129, in as_string
g.flatten(self, unixfrom=unixfrom)
File “C:\Python24\lib\email\Generator.py”, line 82, in flatten
self._write(msg)
File “C:\Python24\lib\email\Generator.py”, line 113, in _write
self._dispatch(msg)
File “C:\Python24\lib\email\Generator.py”, line 139, in _dispatch
meth(msg)
File “C:\Python24\lib\email\Generator.py”, line 185, in _handle_text
self._fp.write(payload)
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-5: ordinal not in range(128)


Как обойти ошибку?
pythonwin
сделал:

# -*- coding: utf-8 -*-
import time,httplib,smtplib
from email.MIMEText import MIMEText
def sendmail():
msg = MIMEText('Ошибка на главной странице\n\
перейти на http://myweb.ru:8000', _subtype='text/html', _charset=“utf-8”)
msg = ‘Ошибка на главной странице’
you='support@myweb.ru'
me='support@myweb.ru'
msg = me
msg = you
server = smtplib.SMTP('192.168.0.1')
server.set_debuglevel(1)
server.sendmail(me, you, msg.as_string())
server.quit()
print “Error”
def run():
while True:
try:
conn = httplib.HTTPConnection(“200.200.200.200”, port=“9999”)
conn.request(“GET”, “/index”)
r1 = conn.getresponse()
print r1.status
if r1.status!=200 and r1.status!=403:
sendmail()
elif r1.status==200 or r1.status==403:
print “Ok”
else:
print “Gluk”
except:
sendmail()
time.sleep(60*30)

print “-”*100
run()
print “-”*100

slav0nic, большое спасибо! Если бы в этом форуме можно было поставить плюс… Скажи как отблагодарить?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB