banner
aying

aying

Time Flies,Have Fun!
github
bilibili
douban

requestsライブラリの使用

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"
}
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。