首先,Python 標準庫中的 urllib2 模塊提供了你所需要的大多數 HTTP 功能,但是它的 API 不友好。它是為另一個時代、另一個互聯網所創建的。它需要巨量的工作,甚至包括各種方法覆蓋,來完成最簡單的任務,所以學習reuqests模塊,比較簡潔好用(以后慢慢會學習scapy,更強大的庫),安裝就不用說了
1 導入模塊
>>> import requests
2 直觀感受一下發送請求的簡潔
>>> r = requests.get('your url')
>>> r = requests.post('your url')
#put delete head options方法也是這種用法
3 為url傳遞參數
>>> url_params = {'key':'value'} #字典傳遞參數,如果值為None的鍵不會被添加到url中
>>> r = requests.get('your url',params = url_params)
>>> print(r.url)
your url?key=value
4 響應的內容
>>> r.encoding #獲取當前的編碼
>>> r.encoding = 'utf-8' #設置編碼
>>> r.text #以encoding解析返回內容
>>> r.content #以字節形式(二進制)返回
>>> r.json() #以json形式返回,前提返回的內容確保是json格式的,不然解析出錯會拋異常
5 定制頭和coookie信息
>>> header = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/38.0.2125.122 Safari/537.36 SE 2.X MetaSr 1.0'}
>>> cookie = {'key':'value'}
>>> r = requests.get/post('your url',headers=header,cookies=cookie)
6 發送post數據請求
>>> send = {'key':'value'}
>>> r = requests.post('your url',data = send) # 如果你傳遞一個 string 而不是一個dict ,那么數據會被直接發布出去,這個也可以上傳文件
7 響應狀態碼
>>> r.status_code #如果不是200,可以使用 r.raise_for_status() 拋出異常
8 響應
>>> r.headers #返回字典類型,頭信息
# r.requests.headers 返回發送到服務器的頭信息
>>> r.cookies #返回cookie
>>> r.history #返回重定向信息,當然可以在請求是加上allow_redirects = false 阻止重定向
9 超時
>>> r = requests.get('url',timeout=1)#設置秒數超時,僅對于連接有效
10 會話對象,讓你能夠跨請求保持某些參數
>>> s = requests.Session()
>>> s.auth = ('auth','passwd')
>>> s.headers = {'key':'value'}
>>> r = s.get('url')
>>> r1 = s.get('url1')
11 代理
>>> proxies = {'http':'ip1','https':'ip2' }
>>> requests.get('url',proxies=proxies)
服務器之家推薦閱讀: