最近還在看Python版的rcnn代碼,附帶練習Python編程寫一個小的網絡爬蟲程序。
抓取網頁的過程其實和讀者平時使用IE瀏覽器瀏覽網頁的道理是一樣的。比如說你在瀏覽器的地址欄中輸入 www.baidu.com 這個地址。打開網頁的過程其實就是瀏覽器作為一個瀏覽的“客戶端”,向服務器端發送了 一次請求,把服務器端的文件“抓”到本地,再進行解釋、展現。HTML是一種標記語言,用標簽標記內容並加以解析和區分。瀏覽器的功能是將獲取到的HTML代碼進行解析,然后將原始的代碼轉變成我們直接看到的網站頁面。
統一資源標志符(Universal Resource Identifier, URI), 統一資源定位符(Uniform Resource Locator,URI),URL是URI的一個子集。
總的來說,網絡爬蟲的原理很簡單,就是通過你事先給定的一個URL,從這個URL開始爬,下載每一個URL的HTML代碼,根據你要抓取的內容,觀察HTML代碼的規律性,寫出相應的正則表達式,將所需的內容的HTML代碼摳出來,保存在列表中,並按具體要求處理扣出來的代碼,這就是網絡爬蟲,其實就是一個對若干有規律的網頁的HTML代碼進行處理的程序。(當然,這只是簡單的小爬蟲,對於一些大型爬蟲,可以設置有很多線程分別處理每一次獲取到的URL地址)。其中要實現正則表達式的部分內容,應該導入re包,要實現URL的加載,閱讀功能需要導入urllib2包。
顯示網頁代碼:
import urllib2 response = urllib2.urlopen('http://www.baidu.com/') html = response.read() print html
當然,在請求服務器服務的過程中,也會產生異常:URLError在沒有網絡連接(沒有路由到特定服務器),或者服務器不存在的情況下產生。
對網頁的HTML代碼進行處理:
import urllib2 import re def getimg(html): reg = r'src="(.+?\.jpg)" pic_ext' imgre = re.compile(reg) imglist = re.findall(imgre,html) return imglist
上面代碼找到參數HTML頁面中所有圖片的URL,並且分別保存在列表中,然后返回整個列表。程序執行結果如下:
整篇文章比較低級,還望各位看官不吝賜教。除了程序中所用到了這些基本的方式,還有更強大的Python爬蟲工具包Scrapy。