今天的古巴任務(wù)解析跟我們平時(shí)學(xué)的代碼相比那是非常的長啊。重點(diǎn)是序列化與反序列化,還用上了字典和urllib的一些其他用法。
python大大的圖
一開始我按這個(gè)代碼敲涛酗,和群里戰(zhàn)友們一樣運(yùn)行不出來,后來看了陳容喜同學(xué)的簡書才發(fā)現(xiàn)最后一行是print偷厦,我們連print都沒有敲商叹,怎么會(huì)打印,下圖是大大又運(yùn)行一遍之后的代碼只泼,注意第26行剖笙。
如果只敲了25行結(jié)果一定是這樣的
我的圖
這個(gè)程序是說先讀取那個(gè)rss文件,逐條抽取url,訪問url內(nèi)容请唱。然后按(url =? 內(nèi)容)方式存放到字典里弥咪。序列化字典到文件。然后再反序列化那文件十绑,就可以按某個(gè)url來提取聚至,或是全部按列表提出了。序列化就是那個(gè)梗本橙。由于urllib的效率沒有urllib2好晚岭,在遍歷鏈接列表的時(shí)候,大大使用了urllib2.
第八行勋功,首先我們抓取了外部的網(wǎng)址"http://feeds.bbci.co.uk/news/scotland/rss.xml"把它下載到本地文件"/tmp/news.html"中坦报。 第九行定義了一個(gè)空的urls。get_page()用于獲取網(wǎng)址url的內(nèi)容狂鞋。第十一到十四行是說片择,urllib2用一個(gè)Request對(duì)象來映射你提出的HTTP請(qǐng)求,在它最簡單的使用形式中你將用你要請(qǐng)求的地址創(chuàng)建一個(gè)Request對(duì)象,通過調(diào)用urlopen并傳入Request對(duì)象骚揍,將返回一個(gè)相關(guān)請(qǐng)求response對(duì)象字管,這個(gè)應(yīng)答對(duì)象如同一個(gè)文件對(duì)象啰挪,所以你可以在Response中調(diào)用.read()。其實(shí)也就是讀取rss文件嘲叔。 十五行是定義字典亡呵,十六行是以只讀方式打開本地文件。re.split()可以將字符串匹配正則表達(dá)式的部分分割開并返回一個(gè)列表硫戈。十七行是把經(jīng)過一定處理的網(wǎng)頁保存到urls里锰什。第十八到二十一行是說,對(duì)于urls里的網(wǎng)頁丁逝,如果有符合http協(xié)議的汁胆,那么就用downs[url]=get_page(url)這種url=>內(nèi)容方式保存到字典里。由于只是舉一個(gè)例子霜幼,保存了一個(gè)網(wǎng)頁的內(nèi)容以后就可以跳出循環(huán)了嫩码。二十二到二十三行說的是序列化,我們把字典里保存的網(wǎng)頁內(nèi)容寫入文件罪既。二十四二十五行說的是反序列化铸题,我們把剛剛寫入文件的內(nèi)容讀出來。最后通過二十六行打印出我們獲取的網(wǎng)頁內(nèi)容琢感。
大大在例子里選取了一種很特殊的rss網(wǎng)頁回挽,這樣就可以得到很多網(wǎng)頁列表。原來并不是隨便一個(gè)網(wǎng)頁都可以做出這樣的結(jié)果啊
昨天沒有發(fā)文章猩谊,我的過千劈。楚喬傳太好看了,看的忘記了寫文章的時(shí)間牌捷,結(jié)果晚上寫一半睡著了(-_-) zzz今天要先寫文章再玩兒~