python網絡爬蟲學習(一)通過GET和POST方式獲取頁面內容

python網絡爬蟲學習

(一)通過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#顯示#


程序運行之後,你可以試試將獲取的網頁源代碼用瀏覽器打開,會發現得到的頁面是這樣的

因爲我們向網站提供的數據是隨便寫的,並不存在,所以就會得到這樣的結果。
這裏寫圖片描述

以上是我學習python爬蟲的一點小小的經驗,現在加以記錄並與大家分享

2016-05-20
於朝陽

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