初學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;