Python入門學(xué)習(xí)過程(41)

今天玩的代碼是“翻墻”訪問外網(wǎng)

python大大的圖

圖片發(fā)自簡(jiǎn)書App

我的圖

圖片發(fā)自簡(jiǎn)書App


這個(gè)程序是說(shuō)我們抓取了外部的網(wǎng)址"http://feeds.bbci.co.uk/news/scotland/rss.xml"把它下載到本地文件"/tmp/news.html"中。我們?cè)僮x取"/tmp/news.html"這個(gè)文件。而我們最終打印出來(lái)的內(nèi)容是把"".join(f.readlines())按照某種規(guī)則替換后的字符串,即為按行讀取"/tmp/news.html"里的內(nèi)容,換行后去掉了一些網(wǎng)頁(yè)html符號(hào),留下了適合我們?nèi)丝吹木W(wǎng)址。我特意搜了一下這個(gè)網(wǎng)址,是一則2017年7月11日蘇格蘭的新聞,說(shuō)的是最壞的人可以改變。

圖片發(fā)自簡(jiǎn)書App

今天的精華部分就是urllib模塊提供的urlretrieve()函數(shù)。urlretrieve()可以直接將遠(yuǎn)程數(shù)據(jù)下載到本地。它的標(biāo)準(zhǔn)格式為:

urlretrieve(url,filename,reporthook,data)

參數(shù)url表示遠(yuǎn)程數(shù)據(jù)的路徑,一般是網(wǎng)址,可以是外部的也可以是本地的。參數(shù)filename指定了保存到本地的路徑,如果未指定該參數(shù)urllib會(huì)生成一個(gè)臨時(shí)文件來(lái)保存數(shù)據(jù)。參數(shù) reporthook 是一個(gè)回調(diào)函數(shù),當(dāng)連接上服務(wù)器、以及相應(yīng)的數(shù)據(jù)塊傳輸完畢時(shí)會(huì)觸發(fā)該回調(diào),我們可以利用這個(gè)回調(diào)函數(shù)來(lái)顯示當(dāng)前的下載進(jìn)度。 參數(shù) data 指 post 到服務(wù)器的數(shù)據(jù),該方法返回一個(gè)包含兩個(gè)元素的(filename, headers)元組,filename 表示保存到本地的路徑,header 表示服務(wù)器的響應(yīng)頭。

re.sub()里的re是regular expression的縮寫,表示正則表達(dá)式,sub是substitute的縮寫,表示替換。所以re.sub就是對(duì)于輸入的一個(gè)字符串,利用正則表達(dá)式(的強(qiáng)大的字符串處理功能),去實(shí)現(xiàn)(相對(duì)復(fù)雜的)字符串替換處理,然后返回被替換后的字符串。

大大補(bǔ)充說(shuō),其實(shí)這用re是過濾網(wǎng)頁(yè)html符號(hào),只顯示我們關(guān)注的文字

re.sub原型為re.sub(pattern,repl,string,count)

pattern是正則中的模式字符串。repl是replacement,指替換后的字符串。string是原字符串。count是替換個(gè)數(shù),默認(rèn)為0,表示每個(gè)匹配項(xiàng)都替換。

為了弄明白<.*?>究竟是怎樣一種替換,我把' '改成了'+',+代表了被替換的部位。而<.*?>所寫的也就是這些位置。

圖片發(fā)自簡(jiǎn)書App

join用于將序列中的元素以指定的字符連接生成一個(gè)新的字符串。join的語(yǔ)法為:

str.join(sequence)

參數(shù)sequence為要連接的元素序列。

"".join(f.readlines())是說(shuō)把f.readlines里面的內(nèi)容以join之前兩個(gè)雙引號(hào)里面的連接方式連接起來(lái),兩個(gè)雙引號(hào)里面什么也沒有,這里可能就是換行。如果我們把"".join(f.readlines())改成"=".join(f.readlines()),就可以看到j(luò)oin連接的其實(shí)是行與行之間的內(nèi)容,其實(shí)也不難理解,因?yàn)閞eadlines()是一次讀取所有內(nèi)容并按行返回list嘛。

圖片發(fā)自簡(jiǎn)書App

其實(shí)想要看清楚打印出來(lái)的究竟是什么,我們不妨通過改變最后一句一步一步的來(lái)看看變化

圖片發(fā)自簡(jiǎn)書App
圖片發(fā)自簡(jiǎn)書App
圖片發(fā)自簡(jiǎn)書App

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容