Requests 库使用方法

1、安装Requests库
pip install requests
2、各种请求方式
GET:请求指定的页面信息,并返回实体主体。
HEAD:只请求页面的首部。
POST:请求服务器接受所指定的文档作为对所标识的URI的新的从属实体。
PUT:从客户端向服务器传送的数据取代指定的文档的内容。
DELETE:请求服务器删除指定的页面。
3、各种异常:
1、网络问题(如:DNS查询失败、拒绝连接等),Requests会抛出一个 ConnectionError 异常。
2、无效HTTP响应,Requests则会抛出一个 HTTPError 异常。
3、请求超时,则抛出一个 Timeout 异常。
4、请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。
5、所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException。
测试代码:
import requests
import json
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
data = {
'name': '张三',
}
cookies = {
'CookieKey': 'CookieValue'
}
#get
response = requests.get("http://www.xxx.com/get?id=1", headers=headers, params=data, cookies=cookies)
#post
response = requests.post("http://www.xxx.com/post", data=data, headers=headers, cookies=cookies)
#文件上传
files = {
'file': open('test.txt', 'rb')
}
response = requests.post("http://www.xxx.com/post", files=files)
print(response.json()) #json
print(json.loads(response.text)) #json
print(response.content) #二进制数据
#获取cookies
print(response.cookies)
for key, value in response.cookies.items():
print(key + '=' + value)
#错误证书处理
#from requests.packages import urllib3
requests.urllib3.disable_warnings() #消除警告信息
response = requests.get('https://www.12306.cn', verify=False) #返回的状态码为200
#有时候爬虫会被服务器给屏蔽掉,这时采用的方法主要有:降低访问频率、通过代理ip访问。
proxies = {
"http": "http://127.0.0.1:9743",
"https": "https://127.0.0.1:9743",
}
response = requests.get("http://www.xxx.com", proxies=proxies)
#如果代理需要设置账户名和密码,只需要将字典更改为如下:
proxies = {
"http":"http://user:password@127.0.0.1:9999"
}
#如果代理是通过sokces这种方式,则需要pip install "requests[socks]"
proxies= {
"http":"socks5://127.0.0.1:9999",
"https":"sockes5://127.0.0.1:8888"
}
#访问网站时可能会超时,这时设置好timeout就可以解决这个问题。
from requests.exceptions import ReadTimeout
try:
response = requests.get("http://www.xxx.com", timeout=0.5)
print(response.status_code)
except ReadTimeout:
print('Timeout')
#需要认证的网站可以通过requests.auth模块实现
from requests.auth import HTTPBasicAuth
#方式1:
response = requests.get("http://www.xxx.com",auth=HTTPBasicAuth("user", "123"))
#方式2:
response = requests.get("http://www.xxx.com",auth=("user", "123"))
print(response.status_code)