import requests
r = requests.get('https://www.baidu.com/')
print(type(r))
print(r.status_code)
print(type(r.text))
print(r.text)
print(r.cookies)
#他のリクエストを送信
r = requests.post('http://httpbin.org/post')
r = requests.put('http://httpbin.org/put')
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')
#GETリクエスト
#基本的な例
r = requests.get('http://httpbin.org/get')
print(r.text)
{
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.31.0",
"X-Amzn-Trace-Id": "Root=1-67c2cfc9-197bdfa835c331751229e13d"
},
"origin": "154.40.60.12",
"url": "http://httpbin.org/get"
}
#パラメータを追加
data = {
'name': 'germey',
'age': 22
}
r = requests.get("http://httpbin.org/get",params=data)
print(r.text)
{
"args": {
"age": "22",
"name": "germey"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.31.0",
"X-Amzn-Trace-Id": "Root=1-67c2d039-06fc3a62021e926051aec502"
},
"origin": "154.40.60.12",
"url": "http://httpbin.org/get?name=germey&age=22"
}
#ウェブページの返却タイプは実際には str タイプですが、JSON形式です。返却結果を直接解析して辞書形式を得るには、jsonメソッドを直接呼び出すことができます
import requests
r = requests.get("http://httpbin.org/get")
print(type(r.text))
print(r.json())
print(type(r.json()))
<class 'str'>
{'args': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate, br, zstd', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.31.0', 'X-Amzn-Trace-Id': 'Root=1-67c2d074-4c51486a68ce721962b679a3'}, 'origin': '154.40.60.12', 'url': 'http://httpbin.org/get'}
<class 'dict'>
#ウェブページを取得する "知乎"-"発見"ページの例、コードは適用されません
import re
#ヘッダーを追加
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
r = requests.get("https://www.zhihu.com/explore", headers=headers)
#正規表現を使ってすべての質問内容をマッチさせる
pattern = re.compile('question.*?question_link.*?>(.*?)</a>', re.S)
titles = re.findall(pattern,r.text)
print(titles)
#バイナリデータを取得する githubサイトのアイコンの例
import requests
r = requests.get("https://github.com/favicon.ico")
#print(r.text)
#print(r.content)
#保存
with open('favicon.ico', 'wb') as f:
f.write(r.content)
#POSTリクエスト
data = {'name':'germey','age':'22' }
r = requests.post("http://httpbin.org/post",data = data)
print(r.text)
{
"args": {},
"data": "",
"files": {},
"form": {
"age": "22",
"name": "germey"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Content-Length": "18",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.31.0",
"X-Amzn-Trace-Id": "Root=1-67c2fd51-785a04c7193dac8e4f366d8a"
},
"json": null,
"origin": "154.40.60.12",
"url": "http://httpbin.org/post"
}
# requests は内蔵のステータスコードクエリオブジェクト requests.codes を提供しています
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'
}
r = requests.get('http://www.jianshu.com',headers=headers)
exit() if not r.status_code == requests.codes.ok else print('リクエスト成功')
リクエスト成功
#高度な使用法
#1.ファイルアップロード
files = {'file':open('favicon.ico','rb')}
r = requests.post('http://httpbin.org/post',files = files)
#print(r.text)
#クッキーを取得
r = requests.get('https://www.baidu.com')
print(r.cookies)
for key,value in r.cookies.items():
print(key+'='+value)
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
BDORZ=27315
#クッキーを使用してログイン状態を維持
import requests
headers = {
'cookie':'_xsrf=lFnzNR23XYlIWOlqH7giKRfH0z0aeqlS; Hm_lpvt_98beee57fd2ef70ccdd5ca52b9740c49=1740900296',
'Host':'www.zhihu.com',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36'
}
r = requests.get('https://www.zhihu.com',headers=headers)
print(r.text)
#セッション維持
s = requests.Session()
#テストウェブサイトにリクエストし、クッキーを設定できます
s.get('http://httpbin.org/cookies/set/number/123456789')
#再度リクエストしてクッキーを取得
r = s.get('http://httpbin.org/cookies')
print(r.text)
{
"cookies": {
"number": "123456789"
}
}
#SSL証明書の検証
#HTTPリクエストを送信するとき、SSL証明書をチェックします。verifyパラメータを使用してこの証明書のチェックを制御できます
'''response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)'''
#警告を無視
from requests.packages import urllib3
urllib3.disable_warnings()
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)
#警告をログにキャッチして無視する方法
import logging
logging.captureWarnings(True)
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)
200
200
#プロキシ設定
# プロキシAPIインターフェースを取得し、1つのプロキシIPを取得
api_url = "https://dps.kdlapi.com/api/getdps/?secret_id=******&signature=****&num=1&pt=1&sep=1"
# APIインターフェースから返されたプロキシIPを取得
proxy_ip = requests.get(api_url).text
# ユーザー名とパスワード認証(プライベートプロキシ/専用プロキシ)
username = "*******"
password = "********"
proxies = {
"http": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": proxy_ip},
"https": "http://%(user)s:%(pwd)s@%(proxy)s/" % {"user": username, "pwd": password, "proxy": proxy_ip}
}
print(proxies)
requests.get('https://www.taobao.com', proxies=proxies)
{'http': 'http://d4785269730:4bkl8hdn@218.95.37.135:41577/', 'https': 'http://d4785269730:4bkl8hdn@218.95.37.135:41577/'}
<Response [200]>
#タイムアウト設定
#タイムアウト時間を1秒に設定
r = requests.get('https://www.taobao.com', timeout=1)
print(r.status_code)
# timeoutは接続と読み取りの2つのtimeoutの合計で、別々に渡すことができます
r = requests.get('https://www.taobao.com', timeout=(5, 30))
#永久に待機するには、timeoutをNoneに設定できます
r = requests.get('https://www.taobao.com', timeout=None)
200
#認証
from requests.auth import HTTPBasicAuth
#r = requests.get('http://127.0.0.1:5244/',auth=HTTPBasicAuth('admin','Hyy823237'))
#デフォルトでHTTPBasicAuthクラスを使用して認証します
r = requests.get('http://127.0.0.1:5244/',auth=('admin','Hyy823237'))
print(r.status_code)
200
#準備されたリクエスト
from requests import Request, Session
url = 'http://httpbin.org/post'
data = {'name': 'germey'}
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
}
s = Session()
req = Request('POST', url, data=data, headers=headers)
prepped = s.prepare_request(req)
r = s.send(prepped)
print(r.text)
{
"args": {},
"data": "",
"files": {},
"form": {
"name": "germey"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate, br, zstd",
"Content-Length": "11",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-67c411e2-5e4075fc632d6ba24a26c1a3"
},
"json": null,
"origin": "154.40.60.12",
"url": "http://httpbin.org/post"
}