ホームページ >バックエンド開発 >Python チュートリアル >Python がリクエストを使用して Web ページをリクエストする方法
Requests は urllib2 のすべての機能を継承します。
リクエストは、HTTP 接続の永続性と接続プーリングをサポートし、セッションを維持するための Cookie の使用をサポートし、ファイルのアップロードをサポートし、応答コンテンツのエンコードの自動決定をサポートし、国際化された URL と POST データの自動エンコードをサポートします。
インストール方法
pip を使用してインストール
$ pip install requests
基本的な GET リクエスト (ヘッダー パラメーターとパルマ パラメーター)
1. 最も基本的な GET リクエストは、get メソッド '
response = requests.get("http://www.baidu.com/") # 也可以这么写 # response = requests.request("get", "http://www.baidu.com/")
2. ヘッダーとクエリ パラメーターを追加します
If ヘッダーを追加する場合は、headers パラメーターを渡して、リクエスト ヘッダーにヘッダー情報を追加できます。
URL でパラメータを渡したい場合は、params パラメータを使用できます。
import requests kw = {'wd':'长城'} headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"} # params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode() response = requests.get("http://www.baidu.com/s?", params = kw, headers = headers) # 查看响应内容,response.text 返回的是Unicode格式的数据 print (response.text) # 查看响应内容,response.content返回的字节流数据 print (respones.content) # 查看完整url地址 print (response.url) # 查看响应头部字符编码 print (response.encoding) # 查看响应码 print (response.status_code)
実行結果
....
....
'http://www.baidu .com/s?wd=Great Wall'
'utf-8'
200
response.text を使用する場合、リクエストはテキストに基づいて行われます。 HTTP 応答のエンコーディング 応答コンテンツを自動的にデコードし、ほとんどの Unicode 文字セットをシームレスにデコードできます。
response.content を使用すると、サーバーの応答データの元のバイナリ バイト ストリームが返され、画像などのバイナリ ファイルの保存に使用できます。
1. 基本的な POST リクエスト
response = requests.post("http://www.baidu.com/",data = data)
2.body パラメータ付き
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(response, ensure_ascii=False)) を使用してください。
一般に、セッションを使用してクロスします。 -request 他のページにアクセスする前にログインするなど、特定のパラメータを常に維持してください
# 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. リクエストを使用してインターフェイスを要求すると、エラーが発生します。しかし、インターフェース自体には問題はありません。 これは、インターフェイスには単純なタイプ (通常は 3 つ未満) と複雑なオブジェクト タイプという 2 つのタイプのリクエスト パラメータがあるためです。
解決策: ヘッダーでこれら 2 つのパラメーターの型を定義します。
単純な型: headers={"Content-Type": "application/x-www-form-urlencoded"}
複雑なオブジェクト タイプ: headers={"Content-Type":application/json}
2。一部の HTTPS リクエストには SSL 証明書検証が含まれています
解決策: 応答= request.get("https://www.baidu.com/", verify=False)
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 を保持しますが、特殊なケースではカスタム Cookie を使用する必要があります。
セッション インスタンスを使用してリクエスト間で Cookie を保持します。場合には、カスタム Cookie を使用する必要があります
# 自定义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)
以上がPython がリクエストを使用して Web ページをリクエストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。