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代碼的規律性,寫出相應的正則表達式,將所需的內容的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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM