python網路爬蟲 新浪部落格篇

來源:互聯網
上載者:User

標籤:

上次寫了一個爬世紀佳緣的爬蟲之後,今天再接再厲又寫了一個新浪部落格的爬蟲。寫完之後,我想了一會兒,要不要在部落格園裡面寫個文章記錄一下,因為我覺得這份代碼的含金量確實太低,有點炒冷飯的嫌疑,就是把上次的代碼精簡了一下,用在另外一個網站而已,而且爬別人的部落格總有一種做賊心虛的感覺,怕被各位園友認為是偷窺狂魔。但是這份代碼總歸是我花了精力去寫的,我也不想就此讓它深藏在硬碟之中(電腦實在太老了,可能過兩年硬碟壞了,這份代碼就消失了),還是貼出來權當作拋磚引玉。

說起要爬新浪部落格,總歸是有一個原因吧。我的原因呢也是什麼的簡單,就是這兩天在網上下載了一本python自然語言處理的一本書,就像嘗試著應用一下裡面的理論(其實我都還沒看呢 哈哈),當然照著書裡面的例子玩總歸是沒什麼成就感的,所以就想自己找點東西實驗一下。可能你覺得這個原因和爬新浪部落格沒什麼必然聯絡啊,確實如此,前面扯的東西太虛了,我寫這個東西就是為了滿足一下自己的偷窺慾望,把曾經女神的部落格都下載下來(大家不要噴。。),順便在用前面講的高大上的自然語言理論處理一下(估計很難,八成做不下去)。

講了這麼多廢話了,現在開始說一說爬蟲的工作原理。先原諒我粗糙的塗抹技術,因為實在不想把再出現上次文章中的情況,大家紛紛在評論中討論我在知乎看什麼。首先在新浪播客找到你要下載使用者的首頁,在地址欄中最後一般有一個數字對應於使用者的id,因為每頁放的文章有限,新浪部落格採用了分頁,對應於url裡面的page=2,就是第二頁的意思。在當前的頁面我們可以用Regex解析出文章的發表時間,“查看原文”的連結中找到文章的連結。

因為新浪部落格比較開放的原因,不登陸也能查看文章那個的內容,所以就直接用python裡的urllib2,也不需要設定cookies,省去了很多麻煩。唯一比較麻煩的是如果文章裡面有圖片是多媒體的連結,提取裡面的文字比較麻煩和繁瑣,因為這個介面比較簡單,當然也可以直接解析html,不過我已經習慣了Regex,雖然很麻煩,但還是硬著頭皮寫完了。其中Regex的替換字串的功能非常的好用,就重點講一講這個吧!

在遇到複雜的字串替換的時候,Regex的sub函數用起來非常的easy。貼一段簡單的代碼:

#-*- encoding:UTF-8 -*-import res = u‘‘‘<div class="class1">this is string1</div><div class="class2">這是字串二</DIV>‘‘‘def div_func(m):    if m is None:        return ‘‘    return m.group(1)if __name__ == ‘__main__‘:    pattern = re.compile(u‘<div[\S ]*?>(.*?)</div>‘, re.U | re.S | re.I)    print s    sss = pattern.sub(div_func, s)    print    print sss

在網頁中,會碰到很多不同的格式,如代碼裡面的字串s,如果想把裡面的文字提取出來,對於比較複雜的替換要求,我們可以定義一個函數作為參數傳給sub進行處理,啟動並執行結果如所示,是不是非常的方便?

再講講python的中文編碼問題吧,最簡單的處理就是儘可能少的用str,儘可能多的用unicode。對於來自檔案的輸入資料,最好先解碼為unicode再做處理,這樣可以減少90%的亂碼問題。哦,對了,今天還發現了一個非常好用的一個函數,可以用來下載檔案

import urlliburllib.urlretrieve(url, path)

此函數可以將url中的檔案下載到本地路徑path中,是不是非常的簡單。最後展示一下。當然資料不多啦,女神也就一百多篇的文章,用資料庫有點殺雞用牛刀的感覺,直接輸出到一個文字檔裡面也是挺方便的哈!

最後的最後,還是把原始碼貼出來以供大家參考哈!(由於本人實在不擅長描述細節,所以寫的很粗,望大家多多見諒啊!)

連結:http://files.cnblogs.com/files/lrysjtu/xlblog.rar

python網路爬蟲 新浪部落格篇

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.