Python 内置了 requests 模块,该模块主要用来发 送 HTTP 请求,requests 模块比 urllib 模块更简洁。
语法:
requests.methodname(params)
方法
Method | Description |
---|---|
delete(url, args) | Sends a DELETE request to the specified url |
get(url, params, args) | Sends a GET request to the specified url |
head(url, args) | Sends a HEAD request to the specified url |
patch(url, data, args) | Sends a PATCH request to the specified url |
post(url, data, json, args) | Sends a POST request to the specified url |
put(url, data, args) | Sends a PUT request to the specified url |
request(method, url, args) | Sends a request of the specified method to the specified url |
例如
# 导入 requests 包
import requests
url = "http://httpbin.org"
# 发送请求
x = requests.get(url)
# 返回 http 的状态码
print(x.status_code)
# 响应状态的描述
print(x.reason)
# 返回编码
print(x.apparent_encoding)
输出结果如下:
200
OK
Windows-1252
对于带参数的URL,传入一个dict作为params
参数:
结果是改变 url -> url + ?key=value
>>> url = "http://httpbin.org/get"
>>> params = { "key1": "value1", "key2": "value2"}
>>> y = requests.get(url, params = params)
>>> print(y.url)
http://httpbin.org/get?key1=value1&key2=value2
添加 headers
>>> headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
>>> url = 'https://www.douban.com/'
>>> r = requests.get(url, headers=headers)
>>> print(r.status_code)
200
具体的属性和方法可以参考这里:Python requests.Response Object (w3schools.com)
如果是 post:
>>> url = "http://httpbin.org/post"
>>> payload = {"name": "roy", "age": "80"}
>>> r = requests.post(url, data = payload)
>>> print(r.reason)
OK
>>> import requests
>>> r = requests.get('https://httpbin.org/basic-auth/user/pass', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json'
>>> r.headers
{'Date': 'Fri, 28 Oct 2022 01:36:58 GMT', 'Content-Type': 'application/json', 'Content-Length': '47', 'Connection': 'keep-alive', 'Server': 'gunicorn/19.9.0', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true'}
>>> r.encoding
>>> r.text
'{\n "authenticated": true, \n "user": "user"\n}\n'
>>> r.json()
{'authenticated': True, 'user': 'user'}
>>>
Python Requests get() Method
The get()
method sends a GET request to the specified url.
Syntax
requests.get(url, params={"key": "value"}, args)
args means zero or more of the named arguments in the parameter table below. Example:
requests.get(url, timeout=2.50)
Parameter Values
Parameter | Description |
---|---|
url | Required. The url of the request |
params | Optional. A dictionary, list of tuples or bytes to send as a query string. Default None
|
allow_redirects | Optional. A Boolean to enable/disable redirection. Default True (allowing redirects) |
auth | Optional. A tuple to enable a certain HTTP authentication. Default None
|
cert | Optional. A String or Tuple specifying a cert file or key. Default None
|
cookies | Optional. A dictionary of cookies to send to the specified url. Default None
|
headers | Optional. A dictionary of HTTP headers to send to the specified url. Default None
|
proxies | Optional. A dictionary of the protocol to the proxy url. Default None
|
stream | Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True). Default False
|
timeout | Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response. Default None which means the request will continue until the connection is closed |
verify | Optional. A Boolean or a String indication to verify the servers TLS certificate or not. Default True
|
Return Value
The get() method returns a requests.Response object.
Python Requests post() Method
Example
Make a POST request to a web page, and return the response text:
import requests
url = 'https://www.w3schools.com/python/demopage.php'
myobj = {'somekey': 'somevalue'}
x = requests.post(url, json = myobj)
print(x.text)
Definition and Usage
The post()
method sends a POST request to the specified url.
The post()
method is used when you want to send some data to the server.
Syntax
requests.post(url, data={"key": "value"}, json={"key": "value"}, args)
args means zero or more of the named arguments in the parameter table below. Example:
requests.post(url, data = myobj, timeout=2.50)
Parameter Values
Parameter | Description |
---|---|
url | Required. The url of the request |
data | Optional. A dictionary, list of tuples, bytes or a file object to send to the specified url |
json | Optional. A JSON object to send to the specified url |
files | Optional. A dictionary of files to send to the specified url |
allow_redirects | Optional. A Boolean to enable/disable redirection. Default True (allowing redirects) |
auth | Optional. A tuple to enable a certain HTTP authentication. Default None
|
cert | Optional. A String or Tuple specifying a cert file or key. Default None
|
cookies | Optional. A dictionary of cookies to send to the specified url. Default None
|
headers | Optional. A dictionary of HTTP headers to send to the specified url. Default None
|
proxies | Optional. A dictionary of the protocol to the proxy url. Default None
|
stream | Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True). Default False
|
timeout | Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response. Default None which means the request will continue until the connection is closed |
verify | Optional. A Boolean or a String indication to verify the servers TLS certificate or not. Default True
|
Return Value
参考:
官网:Requests: HTTP for Humans™ — Requests 2.28.1 documentation
https://www.w3schools.com/python/module_requests.asp
Python requests 模块 | 菜鸟教程 (runoob.com)