Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » проверка загрузки html-странички через Python [RSS Feed]

#1 Авг. 1, 2006 12:09:44

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python

Всем привет!

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

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

есть страничка в интернете, которую нужно проверять периодически (загружается/не загружается, итак каждые полчаса). Если страничка не загружается, то нужно отправить сообщение на E-mail. Это реально сделать на питоне?



Офлайн

#2 Авг. 1, 2006 12:28:45

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python

Можно для этого использовать модуль urllib и cron(ну или любой другой планировщик)



Офлайн

#3 Авг. 1, 2006 14:22:35

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python

slivlen
Можно для этого использовать модуль urllib и cron(ну или любой другой планировщик)
Спасибо! А можно простенький пример кода?



Офлайн

#4 Авг. 1, 2006 16:00:55

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2255
Репутация: +  40  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python


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()


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

Офлайн

#5 Авг. 2, 2006 08:23:54

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python

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)



Отредактировано (Авг. 2, 2006 15:09:47)

Офлайн

#6 Авг. 2, 2006 09:55:12

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2255
Репутация: +  40  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python

ну сам подумай=), если по-простому - то:

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

а если сквид возвращает в случае подобной ошибки не 200, то можно и это проанализирловать (но рвдяли он так делает)

Офлайн

#7 Авг. 2, 2006 12:08:09

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python

проблема в том, когда ставишь "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 существует.



Офлайн

#8 Авг. 2, 2006 12:31:23

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python

немного изменил код, ошибка не изчезла

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()



Офлайн

#9 Авг. 2, 2006 13:39:08

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python

Эту проблему решил

# -*- 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)


Как обойти ошибку?



Отредактировано (Авг. 2, 2006 13:40:23)

Офлайн

#10 Авг. 2, 2006 15:04:23

pythonwin
От:
Зарегистрирован: 2006-07-18
Сообщения: 1294
Репутация: +  0  -
Профиль   Отправить e-mail  

проверка загрузки html-странички через Python

сделал:

# -*- 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, большое спасибо! Если бы в этом форуме можно было поставить плюс… Скажи как отблагодарить?



Офлайн

  • Начало
  • » Web
  • » проверка загрузки html-странички через Python[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version