برنامه: بانک اطلاعاتی وضعیت وبسایت ها

Vafa Karamzadegan

مطالب مرتبط

تولید حروف تصادفی در python

تولید حروف تصادفی در python

Pyhton
۱۳۹۶/۴/۲۳ ۱۰۵۵

 حتما تا بحال برایتان پیش آمده که وبسایتان قابل دسترسی نبوده و برای عیب یابی مشکل از سرویس هایی نظیروبسایت downforeveryoneorjustme.com و یا isitdownrightnow.com استفاده کرده اید.
نحوه کار این وبسایت ها به این صورت است که با توجه به میزان محبوبیت وبسایت های جهان، روزانه درخواستی به وبسایت مورد نظر ارسال میکنند و مشخص میکنند که آیا وبسایت مذکور قابل دسترس است یا خیر و مدت زمان متوسط پاسخگویی وبسایت را بررسی میکنند و با توجه به اطلاعات بدست آمده گزارش هایی را در بازه های روزانه، هفتگی و ماهانه منتشر میکنند.

میخواهیم اسکریپت ساده ای بنویسیم که آدرس وبسایت مورد نظر را از کاربر دریافت کند و یک درخواست HTTP به آن ارسال کند. سپس تعیین کند که آیا وبسایت مورد نظر پاسخی را ارسال کرده یا خیر.
همچنین مدت زمان پاسخگویی را مشخص کند و در پایان تمام این اطلاعات را در بانک اطلاعاتی ذخیره کند.

این مثال برای آشنایی با کتابخانه های sqlite3 و httplib مناسب است.

import httplib
import datetime
import urlparse
import sys
import sqlite3

DBconn = None

def prettifyURL(addr):
    p = urlparse.urlparse(addr, 'http')
    netloc = p.netloc or p.path
    if not netloc.startswith('www.'):
        netloc = 'www.' + netloc

    return netloc

def setupDatabase():
    global DBconn
    DBconn = sqlite3.connect('data.db')

    DBconn.execute('''CREATE TABLE IF NOT EXISTS WebsitesData
(ID INTEGER PRIMARY KEY AUTOINCREMENT,
url CHAR(255) NOT NULL,
statusCode INT NOT NULL,
statusDesc CHAR(255),
ts INT,
responseTime REAL);''')

def closeApp():
    global DBconn
    DBconn.close()

def openWebsite(addr):
    global DBconn

    p_addr = prettifyURL(addr)

    try:
        start_time = datetime.datetime.now()
        conn = httplib.HTTPConnection(p_addr)
        conn.request("HEAD","/")
        res = conn.getresponse()
        end_time = datetime.datetime.now()

        delta = end_time - start_time
        print res.status, res.reason, "[" + str(delta.total_seconds()) + "ms]"

        c = DBconn.cursor()
        t = (p_addr, res.status, res.reason, datetime.datetime.now(), delta.total_seconds())
        c.execute('INSERT INTO WebsitesData(url, statusCode, statusDesc, ts, responseTime) VALUES(?, ?, ?, ?, ?)', t)
        DBconn.commit()

    except Exception, e:
        print str(e)
        sys.exit()




setupDatabase()

addr = raw_input("Enter the Website address: ")
openWebsite(addr)

closeApp()

برنامه نوشته شده ساده است و در صورت آشنایی اولیه با پایتون فکر نمیکنم جایی از کد برایتان مبهم باشد.
در صورت داشتن هر گونه ابهام، سوال خود را درقسمت نظرات بنویسید.

۰ نظر