Request
request
GET
参数名 | 含义 |
---|---|
params | 请求参数 |
header | 请求头 |
timeout | 超时时间 |
cookies | cookie值 |
verify=False | ssl证书验证 |
auth | 身份认证 |
proxies | 代理 |
POST
参数名 | 含义 |
---|---|
data | 请求体 |
files | 请求文件 |
jason | 请求json |
Response
参数名 | 含义 |
---|---|
r.content | 二进制内容 |
r.json | json数据 |
r.text | 文本内容 |
r.status_code | 状态码<class 'int'> 200 |
r.header | 头部<class 'requests.structures.CaseInsensitiveDict'> {'Server': 'nginx/1.17.8', 'Date': 'Sun, 01 Mar 2020 13:31:54 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Vary': 'Accept-Encoding', 'X-Frame-Options': 'SAMEORIGIN', 'Strict-Transport-Security': 'max-age=15724800; includeSubDomains', 'Content-Encoding': 'gzip'} |
r.cookies | cookie值<class 'requests.cookies.RequestsCookieJar'> <RequestsCookieJar[]> |
r.url | url值<class 'str'> https://static1.scrape.center/ |
r.history | 历史值<class 'list'> [] |
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import requests
# 1.请求头header
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://static1.scrape.center/', headers=headers)
print(r.text)
# 2.请求参数params
data = {
'name': 'lp',
'age': 25
}
r = requests.get('http://httpbin.org/get', params=data)
print(r.text)
# 3.超时 timeout=(connect,read)
r = requests.get('https://httpbin.org/get', timeout=(5, 30))
print(r.status_code)
# 4.SSL 证书验证
# 方式一:设置忽略告警
from requests import urllib3
urllib3.disable_warnings()
# 方式二:补货告警
import logging
logging.captureWarnings(True)
response = requests.get('https://static2.scrape.center/', verify=False)
print(response.status_code)
# 5.身份认证
# 方式一:HTTPBasicAuth('admin', 'admin')
from requests.auth import HTTPBasicAuth
r = requests.get('https://static3.scrape.center/', auth=HTTPBasicAuth('admin', 'admin'))
print(r.status_code)
# 方式二:默认
r = requests.get('https://static3.scrape.center/', auth=('admin', 'admin'))
print(r.status_code)
# 方式三: OAuth 认证 pip3 install requests_oauthlib
from requests_oauthlib import OAuth1
url = 'https://api.twitter.com/1.1/account/verify_credentials.json'
auth = OAuth1('YOUR_APP_KEY', 'YOUR_APP_SECRET',
'USER_OAUTH_TOKEN', 'USER_OAUTH_TOKEN_SECRET')
requests.get(url, auth=auth)
# 6.代理设置:proxies
# 6.1HTTP 代理
proxies = {
'http': 'http://10.10.10.10:1080',
'https': 'http://10.10.10.10:1080',
}
requests.get('https://httpbin.org/get', proxies=proxies)
# 6.2SOCKS 协议代理 pip3 install "requests[socks]"
proxies = {
'http': 'socks5://user:password@host:port',
'https': 'socks5://user:password@host:port'
}
requests.get('https://httpbin.org/get', proxies=proxies)
# 7.Cookies
headers = {
'Cookie': '_octo=GH1.1.1849343058.1576602081; _ga=GA1.2.90460451.1576602111; '
'__Host-user_session_same_site=nbDv62kHNjp4N5KyQNYZ208waeqsmNgxFnFC88rnV7gTYQw_; '
'_device_id=a7ca73be0e8f1a81d1e2ebb5349f9075; '
'user_session=nbDv62kHNjp4N5KyQNYZ208waeqsmNgxFnFC88rnV7gTYQw_; logged_in=yes; dotcom_user=Germey; '
'tz=Asia%2FShanghai; has_recent_activity=1; _gat=1; _gh_sess=your_session_info',
'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',
}
r = requests.get('https://github.com/', headers=headers)
print(r.text)
# 8.post请求
data = {'name': 'germey', 'age': '25'}
r = requests.post("http://httpbin.org/post", data=data)
print(r.text)
# 9.文件上传
files = {'file': open('favicon.ico', 'rb')}
r = requests.post('http://httpbin.org/post', files=files)
print(r.text)
# 10.Session 维持
s = requests.Session()
s.get('http://httpbin.org/cookies/set/number/123456789')
r = s.get('http://httpbin.org/cookies')
print(r.text)
# 11.Prepared Request
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)
# response包含的属性
r.content #二进制
r.json
r.text
r.status_code
r.header
r.cookies
r.url
r.history