用途としては、HTTPの情報を取得するときに使う。取得した後に、BeautifulSoupなどを利用して、htmlの構文解析を行ったりする。
requestsにはHTTPリクエストと同じように以下のようなメソッドが存在する。
requests.post()
requests.get()
requests.patch()
requests.delete()
requests.put()
requests.head()
getメソッドはHTTPリクエストのGETに相当する。他も同様にそれぞれHTTPリクエストに相当する。
requests.get()
Responseオブジェクト
一番ベーシックになるのがget()メソッド。get()の第一引数にurlを指定することでResponseオブジェクトを取得することが出来る。
import requests
target_url = 'https://www.yahoo.co.jp/'
r = requests.get(target_url)
print(r)
# <Response [200]>
encoding属性
>>> r.encoding
# UTF-8
text属性
エンコーディングされたテキストを取得出来る。
>>> r.text
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n<meta http-equiv="content-type" content="text/html; charset=utf-8">\n<meta http-equiv="content-style-type" content="text/css">\n<meta http-equiv="content-script-type" content="text/javascript">\n<meta name="description" content="日本最大級のポータルサイト。検索、オークション、ニュース、メール、コミュニティ、ショッピング、など80以上のサービスを展開。あな
content属性
デコードされていないテキスト
>>>r.content
b'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">\n<html>\n<head>\n<meta http-equiv="content-type" content="text/html; charset=utf-8">\n<meta http-equiv="content-style-type" content="text/css">\n<meta http-equiv="content-script-type" content="text/javascript">\n<meta
headers属性
レスポンスヘッダの取得
>>> r.headers
{'Date': 'Mon, 09 Sep 2019 14:33:30 GMT', 'P3P': 'policyref="http://privacy.yahoo.co.jp/w3c/p3p_jp.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"', 'X-Content-Type-Options': 'nosniff', 'X-XSS-Protection': '1; mode=block', 'X-Frame-Options': 'SAMEORIGIN', 'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip', 'Expires': '-1', 'Pragma': 'no-cache', 'Cache-Control': 'private, no-cache, no-store, must-revalidate', 'Content-Length': '5010', 'Content-Type': 'text/html; charset=UTF-8', 'Age': '0', 'Connection': 'keep-alive', 'Via': 'http/1.1 edge2424.img.djm.yahoo.co.jp (ApacheTrafficServer [c sSf ])', 'Server': 'ATS'}
status_code属性
レスポンスのステータスコードを取得することが出来る。
>>> r.status_code
200
200以外の不正なリクエストに対して例外処理を実施したい場合には、raise_for_status()メソッドを利用することが出来る。
>>> r.raise_for_status()
ステータスが200の時は何も起こらない。
第二引数
第二引数にパラメータをセットすることも出来る。
辞書型で定義する。URLにパラメータをセットすることができる。
>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get("http://httpbin.org/get", params=payload)
>>> print r.url
# http://httpbin.org/get?key2=value2&key1=value1
以下はユーザーエージェントを指定する例。
headers = {‘User-Agent’: ‘Sample Header’}
requests.get(‘URL’, headers=headers)