【乾物】requestsの使い方
Requests is an elegant and simple HTTP library for Python, built for human beings.
2つの重要な方法:getとpost
requests.get()
構文
r = requests.get(url, params={}, headers={}, cookies={}, allow_redirects=True, timeout=float, proxies={}, verify=True)
パラメータの説明
パラメータ名
を選択します.
説明
url
str
要求アドレス、必須
params
dict
パラメータ、辞書のタイプを設定します.たとえば、{‘key 1’:‘value 1’,‘key 2’:‘value 2’};
headers
dict
ヘッダ、辞書タイプ、例えば{'user-agent':'my-app/0.0.1'};
cookies
dict
クッキー、辞書のタイプを設定します.たとえば、{「key」:「value」};
allow_redirects
bool
リダイレクトを設定し、デフォルトでオンにします.
timeout
float
要求タイムアウト時間を設定する(s);
proxies
dict
エージェント、辞書のタイプを設定します.http://10.10.1.10:8080“};
verify
bool
証明書検証、デフォルトTrue、またはCAライブラリアドレスを設定します.
注意:verify=Falseの場合、警告が表示されます.packages.urllib3 requests.packages.urllib3.disable_warnings();
requests.post()
構文
r = requests.post(url, data={}, headers={}, cookies={}, json=”, files={}, allow_redirects=True, timeout=float, proxies={}, verify=True)
パラメータの説明
パラメータ名
を選択します.
説明
url
str
要求アドレス、必須
data
dict
フォームデータ、辞書タイプを設定します.jsonを受信することもできる.dumps()後のデータ;
headers
dict
ヘッダ、辞書タイプ、例えば{'user-agent':'my-app/0.0.1'};
cookies
dict
クッキー、辞書のタイプを設定します.たとえば、{「key」:「value」};
json
str
jsonデータを渡す:{‘key’:‘value’};
files
dict
ファイルをアップロードします:{‘file’:open(‘report.txt’,‘rb’)}.注意:ファイルを開くにはバイナリを使用したほうがいいです.
allow_redirects
bool
リダイレクトを設定し、デフォルトでオンにします.
timeout
float
要求タイムアウト時間を設定する(s);
proxies
dict
エージェント、辞書のタイプを設定します.http://10.10.1.10:8080“};
verify
bool
証明書検証、デフォルトTrue、またはCAライブラリアドレスを設定します.
リクエスト応答体の説明
フィールド
を選択します.
説明
r.url
str
エンコードされたリクエストurl
r.text
unicode
処理後のUnicode型データを返す
r.content
str
bytes型の元のデータ(バイナリ)を返します.
r.json()
dict
jsonデータを復号して返す
r.status_code
int
応答ステータスコードを返す
r.raise_for_status()
エラーリクエストを送信すると、この例外が放出されます.
r.headers
dict
サーバ応答ヘッダ情報
r.cookies
dict
Responseのcookies
r.history
list
Responseオブジェクト(リクエスト履歴)リストは、最も古いリクエストから最近のリクエストまでソートされます.
r.encoding
str
r.text出力の符号化フォーマット、すなわちウェブ符号化
r.apparent_encoding
str
r.content元データ符号化タイプ
r.elapsed
urlリクエストに時間がかかる
r.request.headers
dict
リクエストヘッダ情報
requests.utilsでの一般的な方法 requests.utils.get_encodings_from_content(r.content):元のデータ符号化を返します. requests.utils.dict_from_Cookiejar(r.cookies):CookieJarを辞書に変換します. requests.utils.cookiejar_from_dict(cookie_dict,cookiejar=None,overwrite=True):辞書をCookieJarに変換します.
問題と解決策
セッションを開き、クッキーを保持
タイムアウトと最大試行回数の設定 timeoutはget/post等のパラメータ、単位秒である. max_retriesはHTTPAdapterを構築し、max_を設定する必要があります.retriesは、最後にこのAdaptorをrequestsのSessionオブジェクトにロードする.mount時のリンクはフロントエンドの最大マッチングであり、「http://」と「https://」を用いてそれぞれ2種類のウェブサイトに対応することができる.より具体的には、あるサイトに対してもよい. 注:max_retriesはタイムアウトに適用され、アクセスエラーには適用されません. 注:セッションではurl 1を要求して返されたcookiesが自動的に保存され、url 2にアクセスすると自動的に持ち込まれます.
ファイルのアップロード
ストリーミングアップロード
ファイルのダウンロード
注意事項 get()またはpost()のheaders、cookies設定の値は、Requestsにマージされるので、{}が入っても大丈夫です. ピクチャ、pdfなどの開き方は「wb」であり、書き込まれた内容はr.contentであるべきである. 応答ヘッダContent-Typeにcharsetが含まれていない場合、r.textのデフォルトは「ISO-8859-1」である. timeoutに表示されていない設定の場合、理論的にはrequestsリクエストはタイムアウトしません. sessionでパラメータを削除し、その値をNoneに直接設定します.
ドキュメントリソース http://docs.python-requests.org/zh_CN/latest/user/quickstart.html http://docs.python-requests.org/zh_CN/latest/user/advanced.html#advanced http://platinhom.github.io/2015/12/25/py-requests/
2つの重要な方法:getとpost
requests.get()
構文
r = requests.get(url, params={}, headers={}, cookies={}, allow_redirects=True, timeout=float, proxies={}, verify=True)
パラメータの説明
パラメータ名
を選択します.
説明
url
str
要求アドレス、必須
params
dict
パラメータ、辞書のタイプを設定します.たとえば、{‘key 1’:‘value 1’,‘key 2’:‘value 2’};
headers
dict
ヘッダ、辞書タイプ、例えば{'user-agent':'my-app/0.0.1'};
cookies
dict
クッキー、辞書のタイプを設定します.たとえば、{「key」:「value」};
allow_redirects
bool
リダイレクトを設定し、デフォルトでオンにします.
timeout
float
要求タイムアウト時間を設定する(s);
proxies
dict
エージェント、辞書のタイプを設定します.http://10.10.1.10:8080“};
verify
bool
証明書検証、デフォルトTrue、またはCAライブラリアドレスを設定します.
注意:verify=Falseの場合、警告が表示されます.packages.urllib3 requests.packages.urllib3.disable_warnings();
requests.post()
構文
r = requests.post(url, data={}, headers={}, cookies={}, json=”, files={}, allow_redirects=True, timeout=float, proxies={}, verify=True)
パラメータの説明
パラメータ名
を選択します.
説明
url
str
要求アドレス、必須
data
dict
フォームデータ、辞書タイプを設定します.jsonを受信することもできる.dumps()後のデータ;
headers
dict
ヘッダ、辞書タイプ、例えば{'user-agent':'my-app/0.0.1'};
cookies
dict
クッキー、辞書のタイプを設定します.たとえば、{「key」:「value」};
json
str
jsonデータを渡す:{‘key’:‘value’};
files
dict
ファイルをアップロードします:{‘file’:open(‘report.txt’,‘rb’)}.注意:ファイルを開くにはバイナリを使用したほうがいいです.
allow_redirects
bool
リダイレクトを設定し、デフォルトでオンにします.
timeout
float
要求タイムアウト時間を設定する(s);
proxies
dict
エージェント、辞書のタイプを設定します.http://10.10.1.10:8080“};
verify
bool
証明書検証、デフォルトTrue、またはCAライブラリアドレスを設定します.
リクエスト応答体の説明
フィールド
を選択します.
説明
r.url
str
エンコードされたリクエストurl
r.text
unicode
処理後のUnicode型データを返す
r.content
str
bytes型の元のデータ(バイナリ)を返します.
r.json()
dict
jsonデータを復号して返す
r.status_code
int
応答ステータスコードを返す
r.raise_for_status()
エラーリクエストを送信すると、この例外が放出されます.
r.headers
dict
サーバ応答ヘッダ情報
r.cookies
dict
Responseのcookies
r.history
list
Responseオブジェクト(リクエスト履歴)リストは、最も古いリクエストから最近のリクエストまでソートされます.
r.encoding
str
r.text出力の符号化フォーマット、すなわちウェブ符号化
r.apparent_encoding
str
r.content元データ符号化タイプ
r.elapsed
urlリクエストに時間がかかる
r.request.headers
dict
リクエストヘッダ情報
requests.utilsでの一般的な方法
問題と解決策
セッションを開き、クッキーを保持
s = requests.Session() #
cookies = json.loads(result) # phantomjs cookies json
cookie = {}
for k in cookies:
cookie[k['name']] = k['value'] # cookie name value
s.cookies = requests.utils.cookiejar_from_dict(cookie, cookiejar=None, overwrite=True) # cookie cookieJar,
s.get(url.....) # cookie
---------
s.cookies: cookiejar ;
s.cookies.get_dict(): dict,cookie ;
タイムアウトと最大試行回数の設定
requestsSession = requests.Session() #
requestsAdapterA = requests.adapters.HTTPAdapter(max_retries=3) #
requestsSession.mount('http://', requestsAdapterA) # http
r = requestsSession.get(url , timeout=20) # url
ファイルのアップロード
url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
# files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})} # 、 、
r = requests.post(url, files=files)
r.text
ストリーミングアップロード
with open('xxx.txt') as fp:
requests.post('http://some.url/api', data=fp)
ファイルのダウンロード
from PIL import Image
from StringIO import StringIO
url = 'http://xxx.jpg'
r = requests.get(url)
i = Image.open(StringIO(r.content))
i.save('local.jpg')
注意事項
ドキュメントリソース