Requests请求库
Requests請求庫
import requests
# -*- coding:utf8 -*-
# -*- coding:utf8 -*-
# 工程路徑:3 requests請求庫使用.py
# 工程日期:8/6/2019
# 工程目標:
"""
requests 7個主要方法:
requests.request(): 構造一個請求,支撐一下各方法的基礎方法
requests.get(): 獲取HTML網頁的主要方法,對應HTTP的GET
requests.head(): 獲取HTML網頁頭的信息方法,對應HTTP的HEAD
requests.post(): 向HTML網頁提交POST請求方法,對應HTTP的POST
requests.put(): 向HTML網頁提交PUT請求的方法,對應HTTP的RUT
requests.patch(): 向HTML網頁提交局部修改請求,對應于HTTP的PATCH
requests.delete(): 向HTML頁面提交刪除請求,對應HTTP的DELETE
13個參數 requests.request(method,url,**kwargs)
method:請求方式,對應get/put/post等7種
requests.method(url, **kwargs)
url:擬獲取頁面的url鏈接
**kwargs:控制訪問參數,共13個,均為可選項:
params: 字典或字節序列,作為參數增加到url中
data: 字典,字節序列或文件對象,作為Request的內容
json: JSON格式的數據,作為Request的內容
headers: 字典,HTTP定制頭(模擬瀏覽器進行訪問)
cookies: 字典或CpplieJar,Request中的cookie
auth: 元祖,支持HTTP認證功能
files: 字典類型,傳輸文件
timeout: 設定超時時間,秒為單位
proxies: 字典類型,設定訪問代理服務器,可以增加登陸認證
allow_redirects:True//False, 默認為True,重定向開關
stream:True/False,默認為True, 獲取內容立即下載開關
verify:True/False,默認為True, 認證SSL證書開關
cert: 本地SSL證書路徑
"""
#%%
import requests
response = requests.get('http://www.baidu.com/')
print(type(response)) #查看response的類型
print(requests.status_codes) # 狀態碼
print(response.text) # 輸出響應內容
print(response.headers) # 返回響應頭
print(requests.cookies)
#%% get 方法傳傳參 添加參數,headers等
import requests
data = {
"s?tn" : "02003390_30_hao_pg",
'wd':'美女'
}
header = {}
response = requests.get('http://www.taobao.com/',params=data )
print(response.text)
print(response.url)
#%% 解析json
import requests
import json
response = requests.get('http://www.baidu.com/')
print(response.json())
#%% 獲取二進制流數據
import requests
response = requests.get('https://hbimg.huabanimg.com/6519f3b9d79be866403eb8d33ea5fa9ca5e3e5a2e40f6-Fzf6yq_fw658')
with open('tupian.jpg','wb') as f:
f.write(response.content)
f.close()
#%% 響應屬性
import requests
response = requests.get('http://www.baidu.com')
print(response.content)
print(response.url)
print(response.headers)
print(response.text)
print(response.cookies)
print(response.encoding)
print(response.history)
print(response.next)
#%%狀態碼判斷
import requests
response = requests.get('http://www.baidu.com')
if response.status_code == requests.codes.ok:
print("ok")
#%% 取cookies
import requests
response = requests.get('http://www.baidu.com')
print(response.cookies)
for key, value in response.cookies.items():
print(key + '=' + value)
#%% 會話維持 session
#%% 證書驗證
# 大部分的網站為https網站, 需要證書驗證 非官方認證的證書網站會發生ssl報錯
# 為避免該類型的異常拋出,將證書的參數設置為false
import requests
# response = requests.get('https://www.12306.cn',verify = False)
response = requests.get('https://www.12306.cn')
print(response.status_code)
print(response.content)
#%% 代理設置
# 聲明字典類型的代理集,作為代理參數傳即可
import requests
proxies = {
'http':'http://127.0.0.1:1080'
#'https': 'https://127.0.1.7:1060'
}
response = requests.get('https://www.12306.cn',verify = False, proxies=proxies)
print(response.content)
#%% 異常處理
# requestsexception(ioerror)
# 父類異常為requestexception 繼承IOerror
# requests的異常也可以捕獲子類 connectionerror、urlrequerd、toomanyredirects、httperror
# connecttimeout、readtimeout、timeout、sslerror、proxyerror 異常
import requests
from requests.exceptions import ReadTimeout, HTTPError, RequestException
response = requests.get('http://www.baidu.com')
try:
response = requests.get('https://www.baidu.com', timeout=0.1)
print(response.status_code)
except ReadTimeout:
print("超時錯誤")
except ConnectionError:
print("連接錯誤")
except RequestException
轉載于:https://www.cnblogs.com/binyang/p/10995130.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Requests请求库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 04- 移动APP功能测试要点以及具体业
- 下一篇: 汉化Git Gui