1. 程式人生 > >通過GET和POST方式獲取頁面內容

通過GET和POST方式獲取頁面內容

網路爬蟲,即Web Spider,是一個很形象的名字。把網際網路比喻成一個蜘蛛網,那麼Spider就是在網上爬來爬去的蜘蛛。

HTTP協議中定義了四個與伺服器進行互動的方法,分別是GET, POST,PUT,DELETE ,實際對應對伺服器內容的“增”刪“改”查“四個操作。

本篇文章主要記錄我學習GET和POST請求方式的過程

首先,如何區分GET 和POST請求?

我們可以簡單地通過瀏覽器位址列是否改變來加以區分。舉例說明,在百度上搜索CSDN時,頁面會跳轉到搜尋結果頁,同時瀏覽器上方的URL也會發生改變。

這裡寫圖片描述

如上圖所示,變化就在於,在最初的url後面會附加相關的欄位,以?分割url和請求的資料,這些資料就是你要查詢欄位的編碼。。而這個過程,就是典型的GET請求的情況。

POST請求則顯得”深藏不露“。它在於你必須通過瀏覽器輸入或提交一些伺服器需要的資料,才能給你返回完整的介面,這點其實與GET請求情況有相通之處,但是這個過程瀏覽器的位址列是不會發生跳轉的。

那POST請求提交的資料是如何傳給伺服器的呢?可以採用一些分析頁面的手段來獲取上傳的資料。實際上,POST請求是將提交的資料放在HTTP包的包體中,這種方式無疑加強了資料的安全性,不像GET請求那樣,使用者可以通過跳轉的url就可以查看出向伺服器傳送的資料。另外,POST請求除了提交資料外,還可以提交檔案,這點也是GET請求做不到的。

總結:在做資料查詢時,建議用GET方式;而在做資料新增、修改或刪除時,建議用POST方式。

下面用具體程式碼展示GET與POST方式的差異

 #coding =utf-8
import urllib2
url="http://www.baidu.com"
req=urllib2.Request(url)#req表示向伺服器傳送請求#
response=urllib2.urlopen(req)#response表示通過呼叫urlopen並傳入req返回響應response#
the_page=response.read()#用read解析獲得的HTML檔案#
print the_page#在螢幕上顯示出來#

這是一個最簡單的爬蟲程式,功能類似於開啟百度主頁。如果你此時用瀏覽器開啟百度並檢視其原始碼,會發現螢幕上的內容和瀏覽器中完全一樣,也就是說,上面這四行程式碼將我們訪問百度時瀏覽器收到的程式碼們全部列印了出來。
這就是一個最簡單的GET的例子。

再來看一個POST方式的例子

#code=utf-8
import urllib2
import urllib
url='http://www.baidu.com'
//把要傳送的資料寫成字典
value={
    'name':'BUPT',
    'age':'60',
    'location':'Beijing'#字典中的內容隨意,不影響#
}
data=urllib.urlencode(value)#對value進行編碼,轉換為標準編碼#
req=urllib2.Request(url,data)#向url傳送請求,並傳送表單data#
response=urllib2.urlopen(req)#獲取響應#
the_page=response.read()#解析#
print the_page#顯示#

程式執行之後,你可以試試將獲取的網頁原始碼用瀏覽器開啟,會發現得到的頁面是這樣的

因為我們向網站提供的資料是隨便寫的,並不存在,所以就會得到這樣的結果。

這裡寫圖片描述