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