1.依頼の背景
リクエストはurllib2のすべての機能を継承します。リクエストは、HTTP接続保持と接続プーリングをサポートし、Cookieを使用してセッションを維持し、ファイルのアップロードをサポートし、応答コンテンツのエンコーディングの自動決定をサポートし、国際化されたURLとPOSTデータの自動エンコーディングをサポートします。
次に、インストールを要求します
pipでインストール:$ pip install requests
3.リクエストの使用
GETリクエスト
1.基本的なGETリクエスト
response = requests.get("http://www.baidu.com/") #也可以这样写 response = requests.request("get","http://www.baidu.com/")
2.ヘッダーとパラメーターを追加する
ヘッダーを追加する場合は、headersパラメータを渡して、リクエストヘッダーのヘッダー情報を増やすことができます。URLでパラメーターを渡す場合は、paramsパラメーターを使用できます。
key = {'key': 'CC'} headers = { "User-Agent": "Mozilla/5.0"} response = requests.get("http://www.baidu.com/s?", params=key, headers=headers) print(response.text)# 查看响应内容,response.text 返回的是Unicode格式的数据 print(response.content)# 查看响应内容,response.content返回的字节流数据 print(response.status_code)# 查看响应码
テキストを取得したい場合は、response.textを使用できます。画像やファイルを取得したい場合は、response.contentを使用できます。
POSTメソッド
1.基本的なPOSTリクエスト
response = requests.post("http://www.baidu.com/",data = data)
2.パラメータを持つボディ
formdata = { "type": "AUTO", "doctype": "json", "key": "www", "ue": "UTF-8", } url = "http://auto-installment/v1/loan-credit-check" response = requests.post(url,data = data,headers=headers) print(response.text)#显示返回结果 print(response.json())# 如果是json文件可以直接显示
注:
印刷された結果は中国語で文字化けして表示されます。json.dupms(応答、ensure_ascii = False)を使用して解決してください
セッション
通常、Sessionを使用して、ログイン後の他のページへのアクセスなど、クロスリクエスト中に特定のパラメーターを維持します。
# 1. 创建session对象,可以保存Cookie值 session = requests.session() # 2. 需要登录的用户名和密码 data = {"username": "mxxxx", "password": "1233444"} # 3. 发送附带用户名和密码的请求,并获取登录后的Cookie值,保存在ssion里 session.post("https://www.jianshu.com/sign_in", data=data) # 4. ssion包含用户登录后的Cookie值,可以直接访问那些登录后才可以访问的页面 response = session.get("https://www.jianshu.com/writer#/")
注意が必要な事項:
1.リクエストを使用してインターフェースをリクエストすると、エラーが発生しますが、インターフェース自体は問題ではありません。これは、インターフェイスのリクエストパラメータに2つのケースがあるためです:単純型(通常は3未満)と複雑なオブジェクト型。
ソリューション:
ヘッダーでこれら2つのパラメーターの単純なタイプを定義します:headers = {"Content-Type": "application / x-www-form-urlencoded"}
複雑なオブジェクトタイプ:headers = {"Content-Type" :application / json}
2.一部のHTTPSリクエストにはSSL証明書の検証
ソリューションがあります:response = requests.get( " https://www.baidu.com/"、verify = False)
4、拡張を要求する
1.リクエストが失敗した後、再試行メカニズムを追加します(失敗した場合、3回再試行します)
request_retry = requests.adapatrs.HTTPAdapaters(max_retries=3) session.mount('https://',request_retry)
2. grequestsを使用して非同期リクエストを実装する
urls = [ 'http://www.url1.com', 'http://www.url2.com', 'http://www.url3.com', 'http://www.url4.com', 'http://www.url5.com', ] resp = (grequests.get(u) for u in urls) grequests.map(resp)
3.カスタムCookie
リクエスト間のCookieを維持するためにSessionインスタンスを使用しますが、一部の特別なケースでは、カスタムCookieを使用する必要があります
我们使用Session实例来保持请求之间的cookies,但是有些特殊情况,需要使用自定义的cookies # 自定义cookies cookie = {'guid':'5BF0FAB4-A7CF-463E-8C17-C1576fc7a9a8','uuid':'3ff5f4091f35a467'} session.post('http://', cookies=cookie)
4. APIリクエストに要した時間をカウントする
session.get(url).elapsed.total_seconds()
5.リクエストのタイムアウトを設定する
session.get(url, timeout=15)
6.ファイルのアップロード
リクエストはファイルをパラメータとして使用して、ファイルデータの送信をシミュレートします
file = {'file':open('test.bmp','rb')} #rb表示用二进制格式打开指定目录下的文件,且用于只读 r =requests.post('http://',files=file) print(r.text)
V.まとめ
この記事が役立つと思う場合、ソフトウェアテスト、インターフェーステスト、自動テスト、面接経験の交換に興味がある場合は、参加してください。
ソフトウェアテストテクノロジーグループ:695458161、グループで配布される無料の資料は、10年以上にわたるテストのキャリアのエッセンスです。テクノロジーを一緒に交換する仲間もいます。
著者:諸葛
出典ます。https://www.cnblogs.com/csmashang/p/12713012.html
元は容易ではないが、転載を歓迎しますが、著者の同意をキープすることなく、見かけ上の位置に元の記事ページへのリンクを指定して、このセクションで宣言しました。