python網絡爬蟲入門(一)——簡單的博客爬蟲

最近,爲了微信公衆號的圖文,上網瘋狂的收集和看了一些有深度的新聞和有趣的引人深思的文字評論,並選擇了幾篇極品發佈出去。但感覺一篇一篇的看實在是麻煩死了。想找一個簡單的解決辦法,看能不能自動把網上的資料收集起來,然後自己用統一篩選。不巧,最近準備學習下網絡爬蟲相關知識,於是按照網上的教程自己學着試寫了一個小小的爬蟲,嘻嘻,是用來爬韓寒博客的。


先把完整的代碼貼上來,如果朋友們需要試驗下,請先安裝python相關環境,然後在複製粘貼保存,再按F5運行。

#導入urllib庫,python訪問網頁必須庫
import urllib
#時間類庫
import time

#定義一個URL數組用來存放捕獲的URL地址,也就是需要爬的文字地址路徑
url = [''] * 50
#定義link變量,用來記錄第幾個URL地址
link = 1

#循環捕獲博客目錄第一頁所有的文章鏈接,並下載

#定義con變量來存儲urllib.urlopen打開韓寒博客的目錄地址,特別注意下'+str(page)+',用來變化每一頁目錄地址的
con = urllib.urlopen('http://blog.sina.com.cn/s/articlelist_1191258123_0_1.html').read()
#變量title用來存儲con變量中找到<a title=開頭元素的位置
title = con.find(r'<a title=')
#變量href用來存儲con變量中找到href='開頭元素的位置
href = con.find(r'href=',title)
#變量html用來存儲con變量中找到.html開頭元素的位置
html = con.find(r'.html',href)
#存儲第一個連接地址
url[0] = con[href + 6:html + 5]
content = urllib.urlopen(url[0]).read()
open(r'hanhan/'+url[0][-26:],'w+').write(content)
print '0 have downloaded',url[0]
#循環捕獲每一篇文章的地址,並存儲在URL數組中
while title != -1 and href != -1 and html != -1 and link < 50:
    #con[href + 6:html + 5]是用來取con字符串href後6位到html倒數5位之間的字符串
    url[link] = con[href + 6:html + 5]
    #打開讀取每一篇文章地址,並存儲在content中
    content = urllib.urlopen(url[link]).read()
    #打開hanhan這個文件夾,如果裏面沒有url[link][-26:]這個字符串命名的文件,便將content裏的內容寫入,命名爲url[link][-26:]
    open(r'hanhan/'+url[link][-26:],'w+').write(content)
    print link,'have downloaded',url[link]
    title = con.find(r'<a title=',html)
    href = con.find(r'href=',title)
    html = con.find(r'.html',href)
    #自增記數
    link = link +1

這個爬蟲實現的功能還是很簡陋的,但作爲入門我覺得還是夠的。它只是實現了保存博客第一頁目錄所有文章的HTML文件,並沒有抓取特定的內容予以保存。


還有我覺得有編程基礎的人,看起來應該不是很費力,基本的思想很簡單,就是先爬地址,然後爬一個地址就下地址對應的網頁,接着保存爲。我個人覺得,這段代碼還是有點邋遢,不夠簡潔明瞭。希望通過以後的學習能寫出質量更高的代碼。

裏面涉及到的一些方法通過查找python文檔都能找到,也不難,裏面每一個語句我幾乎都標有備註。

運行:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章