目錄
1.讀寫文件
2.時(shí)間設(shè)置
3.正則表達(dá)式
4.計(jì)算機(jī)通信
5.爬蟲
1.讀寫文件
python可以把數(shù)據(jù)儲(chǔ)存在文件中救氯,通過f = open(文件名, 方式)來打開文件對(duì)象讀取數(shù)據(jù)扇商。打開文件的常用方式有“r”:讀取已存在的文件,“w”:新建文件并寫入哑蔫,“a”:如果文件存在,那么寫入到文件的結(jié)尾手素。如果文件不存在鸳址,則新建文件并寫入。打開文件后就可以通過函數(shù)讀取或者寫入文件了泉懦,有關(guān)函數(shù)如下
上下文管理器(context manager)用于規(guī)定某個(gè)對(duì)象的使用范圍崩哩。一旦進(jìn)入或者離開該使用范圍巡球,則會(huì)有特殊操作被調(diào)用,如在不需要文件的時(shí)候自動(dòng)關(guān)閉文件邓嘹。
上面講到文本可以通過寫入到文件而保存到電腦磁盤中,python中的對(duì)象同樣可以這樣做汹押,不過需要利用pickle包矿筝。通過pickle包儲(chǔ)存對(duì)象分兩步走,第一是序列化對(duì)象(dumps函數(shù))棚贾,即將對(duì)象在內(nèi)存中的數(shù)據(jù)抓取出來轉(zhuǎn)換成一個(gè)有序文本窖维,第二是將文本寫入文件儲(chǔ)存,代碼如下
對(duì)象保存在文件中后妙痹,當(dāng)需要用到它時(shí)就可以通過pickle包的load()函數(shù)來將文本轉(zhuǎn)換成對(duì)象了铸史。
2.時(shí)間設(shè)置
python的time包可以幫助我們進(jìn)行各種時(shí)間的管理,如
time包還定義了struct_time對(duì)象怯伊。該對(duì)象將掛鐘時(shí)間轉(zhuǎn)換為年琳轿、月、日、時(shí)崭篡、分挪哄、秒等,存儲(chǔ)在該對(duì)象的各個(gè)屬性中媚送,比如tm_year中燥、tm_mon、tm_mday……下面幾種方法可以將掛鐘時(shí)間轉(zhuǎn)換為struct_time對(duì)象:
python的datetime包是基于time包的一個(gè)高級(jí)包塘偎,datetime模塊下有兩個(gè)類:datetime.date類和datetime.time類疗涉,可以分別管理日期和時(shí)間。也可以直接用datetime.datetime類同時(shí)管理日期和時(shí)間吟秩。方法如下
利用datetime包的timedelta函數(shù)還可以進(jìn)行時(shí)間間隔的運(yùn)算
datatime包中的strptime函數(shù)可以將字符串中的時(shí)間信息轉(zhuǎn)換成datetime類的對(duì)象壮池,比如
相反偏瓤,可以同strftime函數(shù)將datetime對(duì)象轉(zhuǎn)換為特定格式的字符串,
可以看到椰憋,使得轉(zhuǎn)換一一對(duì)應(yīng)的關(guān)鍵就是%引領(lǐng)的符號(hào)厅克,除了上面的符號(hào)外還有
3.正則表達(dá)式
正則表達(dá)式(Regular Expression)的主要功能是從字符串(string)中通過特定的模式,搜索希望找到的內(nèi)容橙依,需要通過re包來實(shí)現(xiàn)证舟,先看一段代碼
re.search()有兩個(gè)參數(shù),第一個(gè)參數(shù)是給出了搜索范圍0-9窗骑,第二個(gè)參數(shù)是表示給出的字符串中有哪些字符串在搜索范圍內(nèi)出現(xiàn)的女责,如果有就賦值給m。m.group()表示查看搜索到的結(jié)果创译,沒有結(jié)果會(huì)返回None抵知。
除了re.search()外,re.match()也可以進(jìn)行搜索软族,不同的是后者必須是字符串的第一個(gè)字符開始就相符才能正常進(jìn)行辛藻,否則返回None。
搜素到的字符串可以用sub()函數(shù)進(jìn)行替換互订,形如str = re.sub(pattern, replacement, string),replacement就是替換用的的字符串痘拆。常用的方法還有
關(guān)于正則表達(dá)式仰禽,常用的語法有下面這些
舉個(gè)例子,第一個(gè),[0-9]{3,5}表示出現(xiàn)在[0-9]內(nèi)的字符重復(fù)(連續(xù))出現(xiàn)了3-5次吐葵,正例“9678”(4次)规揪,反例“12”(2次)、“1234567”(7次)温峭。第二個(gè)猛铅,a?b表示ab中的a可以出現(xiàn)可以不出現(xiàn)凤藏,正例“b”(不出現(xiàn))奸忽、“ab”(出現(xiàn)),反例“cb”(并不是ab形式)揖庄。第三個(gè)栗菜,a+b表示a可以重復(fù)1次或以上,正例“aaaaab”(a重復(fù)了5次再跟b)蹄梢,反例“b”(不是ab形式疙筹,沒有a了)。
還有一些與位置相關(guān)的符號(hào)
正則表達(dá)式的群幕袱,上面已經(jīng)提到過可以用group(0)來查看提取的字符串暴备,其實(shí)這就表示查看所有的提取結(jié)果。如果我們把提取到的結(jié)果分成幾個(gè)部分凹蜂,就成了幾個(gè)群蚜点,以用于進(jìn)一步提取字符串,如
群還可以被命名
4.計(jì)算機(jī)通信
計(jì)算機(jī)之間的通信有一套多層次的協(xié)議體系鸥诽,HTTP(the Hypertext Transfer Protocol)就是最常見的一種毫胜,即超文本傳輸協(xié)議。HTTP協(xié)議能實(shí)現(xiàn)文件擂煞,特別是超文本文件的傳輸混弥。HTTP的工作步驟分為兩步:請(qǐng)求(request)、回復(fù)(response)对省。計(jì)算機(jī)發(fā)出請(qǐng)求時(shí)會(huì)遵照下面格式
·GET:用于說明想要服務(wù)器執(zhí)行的操作蝗拿。
·/index.html: 資源的路徑,這里指向服務(wù)器上的index.html文件蒿涎。
·HTTP/1.1協(xié)議的版本哀托,HTTP第一個(gè)廣泛使用的版本是1.0,當(dāng)前版本為1.1劳秋。
·Host: www.example.com:Host后面是要訪問的服務(wù)器地址仓手。
服務(wù)器在接收到請(qǐng)求之后胖齐,會(huì)根據(jù)程序,生成對(duì)應(yīng)于該請(qǐng)求的回復(fù)嗽冒,比如:
·HTTP/1.1:協(xié)議版本
·200:狀態(tài)碼(status code)
·OK:狀態(tài)描述(其它描述有302:重新定向呀伙。404:無法找到)
·Content-type: text/plain:主體所包含的資源類型為普通文本(其它類型有text/html:HTML文? ? 本、image/jpeg:jpeg圖片添坊、image/gif:gif圖片
·Content-length:12:主體本分的長度為12字節(jié)
·Hello World!:回復(fù)的主體部分
Python標(biāo)準(zhǔn)庫中的http.client包可用于發(fā)出HTTP請(qǐng)求剿另,
5.爬蟲
網(wǎng)絡(luò)爬蟲應(yīng)用很廣,它可以自動(dòng)瀏覽網(wǎng)頁贬蛙,從網(wǎng)頁上抓取我們想要的信息雨女。許多研究互聯(lián)網(wǎng)行為的學(xué)者也會(huì)用爬蟲抓取網(wǎng)絡(luò)信息,用來進(jìn)一步分析人們使用互聯(lián)網(wǎng)的行為速客。我們現(xiàn)在可以利用前面所學(xué)的知識(shí)做一個(gè)簡單的程序戚篙,實(shí)現(xiàn)提取博客最近文章的發(fā)表日期和閱讀量。
第一步:訪問博客首頁溺职,作者的博客地址是www.cnblogs.com/vamei岔擂,主機(jī)是www.cnblogs.com,資源位置是/vamei浪耘。這個(gè)頁面是一個(gè)超文本文件乱灵,所以我們用 HTTPS協(xié)議訪問:
第二步:通過正則表達(dá)式提取有用信息(日期、時(shí)間和閱讀量):
結(jié)果為: