requests的作用就是发送网络请求,返回响应数据
1基本GET请求(headers参数 和 parmas参数) 1.1最基本的GET请求可以直接用get方法- 通过requests向百度首页发送请求,获取百度首页的数据
示例:
import requests
# 目标url
url = 'https://www.baidu.com'
# 向目标url发送get请求
response = requests.get(url) # 方法一
response = requests.request("get", url) # 方法二
# 打印响应内容
print(response.text)
如果response.text有乱码解决办法:
print(response.content.decode())1.2发送带header的请求
-
网站往往都会检测请求头的User-Agent,如果ua不合法,可能会获取不到响应。所以加请求头的目的就是模拟浏览器,欺骗服务器,获取和浏览器一致的内容。当然,有的时候甚至不止需要传User-Agent一个参数,还需要其他的参数像Referer,Cookie等等
-
header的形式:字典
用法
requests.get(url, headers=headers)
import requests
url = 'https://www.baidu.com'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36"
}
# 在请求头中带上User-Agent,模拟浏览器发送请求
response = requests.get(url, headers=headers)
print(response.content.decode())
1.3 url 带参数的请求
参数可以直接拼接在URL后面,问号(?)前面是接口的请求地址,多个参数用连接符(&)连接。
方式一:直接发送带参数的url的请求
import requests
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
url = 'https://www.baidu.com/s?wd=python'
# url中包含了请求参数,所以此时无需params
response = requests.get(url, headers=headers)
print(response.content)
方式二:利用params参数发送带参数的请求
import requests
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36"
}
# 最后有没有问号结果都一样
url = 'https://www.baidu.com/s?'
# 请求参数是一个字典 即wd=python
kw = {'wd': 'python'}
# 带上请求参数发起请求,获取响应
response = requests.get(url, headers=headers, params=kw)
print(response.content)
当有多个请求参数时,requests接收的params参数为多个键值对的字典,比如 '?wd=python&a=c'-->{'wd': 'python', 'a': 'c'}
2 发送POST请求使用POST请求的情况:
- 登录注册( POST 比 GET 更安全)
- 需要传输大文本内容的时候( get方法的拼接长度可能很长,但是浏览器有限制,不能超过2048KB,POST 请求对数据长度没有要求)
import requests
# 确定请求的url地址
url = "https://fanyi.baidu.com/langdetect"
# 构造表单
data = {
"query": 'I am fine'
}
# 表单数据是放在请求体中的
# 发送请求,获取响应
response = requests.post(url, data=data)
# 打印响应的内容
print(response.content.decode())
ST请求
使用POST请求的情况:
- 登录注册( POST 比 GET 更安全)
- 需要传输大文本内容的时候( get方法的拼接长度可能很长,但是浏览器有限制,不能超过2048KB,POST 请求对数据长度没有要求)
import requests
# 确定请求的url地址
url = "https://fanyi.baidu.com/langdetect"
# 构造表单
data = {
"query": 'I am fine'
}
# 表单数据是放在请求体中的
# 发送请求,获取响应
response = requests.post(url, data=data)
# 打印响应的内容
print(response.content.decode())



