1. 程式人生 > >初學python,一些總結

初學python,一些總結

最近偷懶學了下python ,做了兩個小程式,純屬練手,今天來總結一下。

第一個程式是類似於網頁爬蟲,自動登入教務系統批量抓取學生資訊。

第二個程式是利用騰訊微博遠端關機,通過抓取騰訊微博獲取關機指令來關機。

記錄下這次學到(宣告:許多東西都是參考過有的甚至直接copy網上的程式碼,未能一一附上出處請見諒):

MySQLdb模組:用來訪問mysql資料庫

con = MySQLdb.connect(db="test",user='',password='',charset="utf8")#獲得一個連線物件,連線字串中charset屬性設定字符集與資料庫一致,搭建mysql時預設的字符集是拉丁什麼的,還要在資料庫中設定test資料庫的字符集為uft8為了顯示中文
cur=con.cursor()#通過這個方法得到一個遊標物件,一切操作通過遊標進行
cur.execute(sqlstring)#執行一句SQL語句,不帶引數的,返回受影響行數
那麼如果要帶引數呢,例如插入資料:

cur.execute(sqlstring,data)#這裡的data似乎很靈活,用列表元組都可以,列表沒有測試過,我用的元組

見程式碼(部分程式碼取自點選開啟連結):

 value=[1,'hi rollen']
    cur.execute('insert into test values(%s,%s)',value)

這個插入的資料進行了處理,當時只想到了這種方法

sql = "insert into personinfo  values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
        data = ()
        for line in info:
        #元組新增元素時只能和元組用‘+’連線,並且不加‘,’會被當作字串而非元組
                data = data +(line,)

        #插入多個數據時要將資料放在一個元組裡作為引數
        if(cur.execute(sql,data)>0):
                #count2 = count2 +1
                print 'insert successfully...'


操作完資料庫後記得關閉:

cur.close()
con.commit()
con.close()

關閉的順序是先關遊標,再關連線

urllib2模組,urllib模組:

recv = urllib2.urlopen(url)#url='http://www.baidu.com'用於請求一個網址,會返回關於這個網址的一些東西,其中

recv.read()#是返回的HTML網頁

recv.geturl()#是返回的跳轉地址

postheader = {'User-Agent' : 'Mozilla/5.0 (Windows NT 5.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1',
                       'Referer' : posturl}#構造的請求頭資料,其中有的頁面會對請求頭中Referer 這個做驗證,要求它為之前的地址,那麼這時如果它為空可能訪問不了目的網頁

postdata = urllib.urlopen(data)#用來對字典型資料集data中的資料進行編碼,以便傳送到伺服器,這個資料是發往伺服器的資料

send = urllib2.request(posturl,postdata,postheader)#向posturl傳送攜帶編碼好的資料postdata並且請求頭是postheader

response = urllib2.urlopen(send)#獲取伺服器返回的物件

re模組:用於匹配正則表示式

match = re.search('A[0-9]{5}',string)#在string中匹配一個大寫A緊接著五個相連的數字的字串

,匹配到成功後返回的物件不為空,否則返回的物件為空

匹配成功後得到的字串是:A24531;   即一個大寫A後面接五個數字,任何符合這個模式的字串都會被匹配到存到match中,使用match.group()來遍歷match得到匹配到的字串

time模組:它的time.sleep(seconds)#讓程式睡眠一段時間,引數為秒數,若為0.1則為100毫秒

platform模組:

platform.platform()#顯示當前系統的詳細資訊

platform.system()#顯示當前系統的簡要資訊,如‘Windows’

random模組:

random.randint(1,4)#偽隨機獲取1到4之間的整數

os模組:

os.system('halt')#執行系統命令,這個是在linux下關機的命令

os.system('shutdown.exe -f -s -t 20')#這是在windows下呼叫命令關機

還有內建的函式(所謂內建函式就是不用引入模組就可以直接使用的函式):

file = open(filename,openmode)#開啟指定路徑名稱的檔案,以‘w’(可寫模式,清空覆蓋舊檔案),‘r’(可讀模式),‘+’可讀可寫模式,‘a’(新增模式,在原檔案末尾新增)等模式讀寫檔案,用完檔案後一定要記得fiel.close()關閉掉

lines = file.readlines()#讀取多行

lines = file.readline()#讀取一行

write(string)#寫入字串,沒有writeline()

異常捕獲:

try:

.........

exception Exception,ex:

print ex;