Requests
是用python语言基于urllib
编写的HTTP库。Requests
库对urllib
库进行了一层包装。Requests使用比urllib更加方便,可以节约大量的工作。
Requests是python实现的最简单易用的HTTP库,建议爬虫使用Requests库。
安装
默认安装好python之后,是没有安装Requests模块的,需要单独通过pip安装。
使用
- 基本例子
mport requests
response = requests.get("https://www.baidu.com")
print(type(response))
print(response.status_code)
print(type(response.text))
print(response.text)
print(response.cookies)
print(response.content)
print(response.content.decode("utf-8"))
responses使用相比urllib非常方便。需要有以下两点注意
很多情况下的网站如果直接response.text会出现乱码的问题,所以这个使用response.content这样返回的数据格式其实是二进制格式,然后通过decode()转换为utf-8,这样就解决了通过response.text直接返回显示乱码的问题.
请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 response.text 之时,Requests 会使用其推测的文本编码。你可以找出 Requests 使用了什么编码,并且能够使用 response.encoding 属性来改变它.如:
response =requests.get("http://www.baidu.com")
response.encoding="utf-8"
print(response.text)
重点
response.content.decode("utf-8)
与response.encoding="utf-8"
都可以解决乱码问题。
GET请求
- 无参GET请求
import requests
response = requests.get('http://httpbin.org/get')
print(response.text)
- 有参GET请求
参数包含在URL字符串中
import requests
response = requests.get("http://httpbin.org/get?name=zhaofan&age=23")
print(response.text)
参数以字典方式传参
import requests
data = {
"name":"zhaofan",
"age":22
}
response = requests.get("http://httpbionse =n.org/get",params=data)
print(response.url)
print(response.text)
这两种的结果是完全相同的,通过params
参数传递一个字典内容,从而直接构造URL。
注意:第二种方式通过字典的方式的时候,如果字典中的参数为None
则不会添加到URL上。
POST请求
通过在发送POST请求时添加一个data
参数,这个data
参数可以通过字典构造。
import requests
data = {
"name":"zhaofan",
"age":23
}
response = requests.post("http://httpbin.org/post",data=data)
print(response.text)
网友评论