python3的爬蟲筆記3——GET和POST(1)

HTTP定義了與服務(wù)器交互的不同方法,最基本的方法有4種太防,分別是GET妻顶,POST,PUT蜒车,DELETE讳嘱。URL全稱是資源描述符,我們可以這樣認(rèn)為:一個(gè)URL地址酿愧,它用于描述一個(gè)網(wǎng)絡(luò)上的資源沥潭,而HTTP中的GET,POST嬉挡,PUT钝鸽,DELETE就對應(yīng)著對這個(gè)資源的查,改庞钢,增拔恰,刪4個(gè)操作。其中基括,GET一般用于獲取/查詢資源信息颜懊,而POST一般用于更新資源信息,通常用于我們需要向服務(wù)器提交表單的情況风皿。PUT河爹,DELETE一般比較少見。
如何區(qū)分GET請求與POST請求桐款?表面上咸这,我們可以簡單地通過瀏覽器地址欄是否改變來加以區(qū)分。
比如說鲁僚,我們在百度首頁輸入“挪威的森林”炊苫,回車,然后地址欄會(huì)跳轉(zhuǎn)到搜索結(jié)果的列表頁冰沙。同時(shí)可以看到瀏覽器的地址欄會(huì)發(fā)生改變侨艾,變成’’ https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=64075107_1_dg&wd=挪威的森林 …… ’’的形式。變化就在于拓挥,在最初的url后面會(huì)附加相關(guān)的字段唠梨,通常是以‘?’分割url和請求的數(shù)據(jù),各個(gè)數(shù)據(jù)之間用‘&’隔開侥啤。這些數(shù)據(jù)就是你要查詢字段的編碼当叭。而這個(gè)過程茬故,就是典型的GET請求的情況。

百度檢索挪威的森林.png

與之對應(yīng)的POST請求則顯得“深藏不露”蚁鳖。它在于你必須通過瀏覽器輸入或提交一些服務(wù)器需要的數(shù)據(jù)磺芭,才能給你返回完整的界面,這點(diǎn)其實(shí)與GET請求情況有相通之處醉箕,但是這個(gè)過程瀏覽器的地址欄是不會(huì)發(fā)生跳轉(zhuǎn)的钾腺。
那POST請求提交的數(shù)據(jù)是如何傳給服務(wù)器的呢?大家可以采用一些分析頁面的手段來獲取上傳的數(shù)據(jù)讥裤。實(shí)際上放棒,POST請求是將提交的數(shù)據(jù)放在HTTP包的包體中,這種方式無疑加強(qiáng)了數(shù)據(jù)的安全性己英,不像GET請求那樣间螟,用戶可以通過跳轉(zhuǎn)的url就可以查看出向服務(wù)器發(fā)送的數(shù)據(jù)。另外损肛,POST請求除了提交數(shù)據(jù)外厢破,還可以提交文件,這點(diǎn)也是GET請求做不到的荧关。常見的帳號(hào)密碼登錄過程溉奕,就是典型的POST請求。
為了方便的觀察數(shù)據(jù)交流的情況忍啤,我們除了使用開發(fā)者工具外加勤,還能夠用一些軟件、插件同波。比如大名鼎鼎的Fiddler鳄梅,火狐瀏覽器的插件HTTPFOX,谷歌瀏覽器的插件Fiddler未檩。這里以谷歌插件Fiddler(在谷歌商店下載 https://chrome.google.com/webstore/detail/fiddler/hkknfnifmbannmgkdliadghepbneplka?hl=zh-CN )為例戴尸。

一、GET請求(就以在廈大圖書館中檢索"挪威的森林"為例):
首先我們進(jìn)入廈大圖書館( http://library.xmu.edu.cn/portal/#&panel1-1 ):

廈大圖書館首頁.png

打開Fiddler冤狡,在搜索框中輸入“挪威的森林”孙蒙,然后在Fiddler界面中清除(clear)一下,確保顯示的是相關(guān)內(nèi)容悲雳,點(diǎn)擊圖書館頁面的查找:

clear.png

我們可以看到在Fiddler顯示的就是我們的瀏覽器和服務(wù)端之間進(jìn)行的交流啦挎峦,屬性都是GET。我們點(diǎn)開第一個(gè)看一下合瓢,在Query Url中我們看到一些和字典很像的東西坦胶。


Fiddler顯示.png

我們再看一下這時(shí)候的url是什么。


url.png

可以看到和上面GET的描述一樣,新的url用顿苇?把原來的url和一些傳送的數(shù)據(jù)隔開峭咒,傳送數(shù)據(jù)之間用&表示。這些數(shù)據(jù)和Fidder上的數(shù)據(jù)是一樣的纪岁,也就是說我們可以通過給服務(wù)器傳送這些信息來得到檢索結(jié)果凑队。實(shí)際過程中,沒有必要每個(gè)數(shù)據(jù)都傳送蜂科,我們可以自己先“試試”顽决。
比如把新的url刪成:

看一下能不能出來正確結(jié)果:


好的并不行,那我們再加個(gè)數(shù)據(jù)导匣。



看一下結(jié)果:



這回沒問題了。
我們還可以對這些數(shù)據(jù)進(jìn)行推測茸时,比如pageSize=20贡定,應(yīng)該表示的是每頁顯示20條目錄,sort=score應(yīng)該表示分類或排序的方式可都,這里就不試了缓待。我們知道對q0和sType0進(jìn)行傳送就能達(dá)到我們的目的了。那么渠牲,好戲開始吧旋炒。

(1)使用requests模塊:

import requests
#檢索網(wǎng)址為廈大圖書館
url = 'http://210.34.4.28/opac/search_adv_result.php'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/55.0.2883.103 Safari/537.36', 'Connection':'keep-alive'}
#創(chuàng)建要傳送的關(guān)鍵詞以及檢索類型
params = {'q0':'挪威的森林', 'sType0':'any'}
response = requests.get(url=url, params=params, headers=headers)
response.encoding = 'utf-8'
html = response.text
print(html)

顯示結(jié)果為:

檢索結(jié)果.png

(2)方法二使用urllib模塊

import urllib.request
import urllib.parse
#檢索網(wǎng)址為廈大圖書館
url = 'http://210.34.4.28/opac/search_adv_result.php'
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/55.0.2883.103 Safari/537.36', 'Connection':'keep-alive'}
#創(chuàng)建要傳送的關(guān)鍵詞以及檢索類型
values = {'q0':'挪威的森林', 'sType0':'any'}
#編碼工作,將字典轉(zhuǎn)換為字符串的格式
data = urllib.parse.urlencode(value)
#用字符串想加的方式得到新的url
full_url = url + '?' + data
request = urllib.request.Request(url=full_url, headers=headers)
response = urllib.request.urlopen(request).read()
html = response.decode('utf-8')
print(html)

urllib的方法中签杈,新的url還需要用比較麻煩的方式獲得瘫镇,包括調(diào)用了parse中的編碼模塊,手動(dòng)加答姥?實(shí)現(xiàn)字符串拼接铣除。
因此我們能看出requests的便利性。
參考自:
http://www.lining0806.com/2-%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB-get%E8%AF%B7%E6%B1%82%E4%B8%8Epost%E8%AF%B7%E6%B1%82/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鹦付,一起剝皮案震驚了整個(gè)濱河市尚粘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敲长,老刑警劉巖郎嫁,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異祈噪,居然都是意外死亡泽铛,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進(jìn)店門钳降,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厚宰,“玉大人,你說我怎么就攤上這事〔酰” “怎么了澈蝙?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀的道長撵幽。 經(jīng)常有香客問我灯荧,道長,這世上最難降的妖魔是什么盐杂? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任逗载,我火速辦了婚禮,結(jié)果婚禮上链烈,老公的妹妹穿的比我還像新娘厉斟。我一直安慰自己,他們只是感情好强衡,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布擦秽。 她就那樣靜靜地躺著,像睡著了一般漩勤。 火紅的嫁衣襯著肌膚如雪感挥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天越败,我揣著相機(jī)與錄音触幼,去河邊找鬼。 笑死究飞,一個(gè)胖子當(dāng)著我的面吹牛置谦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播噪猾,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼霉祸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了袱蜡?” 一聲冷哼從身側(cè)響起丝蹭,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坪蚁,沒想到半個(gè)月后奔穿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡敏晤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年贱田,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘴脾。...
    茶點(diǎn)故事閱讀 40,865評論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡男摧,死狀恐怖蔬墩,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情耗拓,我是刑警寧澤拇颅,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站乔询,受9級特大地震影響樟插,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜竿刁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一黄锤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧食拜,春花似錦鸵熟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惑惶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間短纵,已是汗流浹背带污。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留香到,地道東北人鱼冀。 一個(gè)月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像悠就,于是被迫代替她去往敵國和親千绪。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評論 2 361

推薦閱讀更多精彩內(nèi)容