requests模块是python第三方库的一个模块,虽然python内置的模块urllib与之相似,但是requests以其强大的实用性挑战甚至超过urllib,所以今天就来更新一下requests模块的基本用法,和简单的爬取网站图片的技巧。
导入模块
import requests
送一个请求
url = 'https://www.baidu.com'
result = requests.get(url)
python会把服务器返回的信息返回赋值给result,我们可以从中获取到想要的信息。
requests模块的请求不仅有get,还有post、delete、head、options,具体用法具体分析
这里我们用get用法演示。
传递url的参数
url = 'https://www.baidu.com'
params = {'name':'tom','age':'20'}
result = requests.get(url,params=params)
print(result.url)
打印url的结果为
https://www.baidu.com/?name=tom&age=20
#url已被正确解码。
注意,也可以把列表传入
服务器响应结果
(文本相应内容)
import requests,urllib
url = 'https://www.baidu.com'
params = {'name':'tom','age':'20'}
result = requests.get(url,params=params)
print(result.encoding)
result.encoding = 'utf-8'
print(result.text)
注意点:
1.result.encoding可以返回字符的编码方式
2.服务器返回的结果的不同,可以用result.encoding = 'utf-8’修改编码方式
3.用result.text转换返回结果的文本方式
返回结果太长,不演示
4.如果响应的是二进制结果result.content可以返回二进制内容
5.如果响应的是json内容,可以用result.json()转码成正常结果
自定义请求头
在很多时候网站会进行限制,程序传入的headers和浏览器传入的headers肯定是不一样的,这时文本可以定制请求头来解决这些限制。
url = 'https://www.baidu.com'
headers = {'user-agent':'xxxxxxx'}
#可以自行打开浏览器网页,点检查自行获取
result = requests.get(url,headers=headers)
这样就可以正确响应服务器的响应而不受限制
post请求
post意思是公布,邮寄的意思,在这里我们可以理解为发送,post请求更加复杂,在传入时我们只需要传入一个字典就可以了。
示例
datas = {'name':'tom','age':'20'}
result = requests.post(url,data=datas)
如果我们想要传入的是str字符串,这时我们得用josn.dumps(datas)
如果想要传入文件,就可以
result = requests.post(url,file=files)
状态码
状态码 | 内容 |
---|---|
2开头 | 已成功 |
3开头 | 已完成 |
4开头 | 请求错误 |
5开头 | 服务器错误 |
在访问服务器的时候,我们可以用result.status_code获取状态码。
url = 'https://www.baidu.com'
result = requests.get(url)
print(result.status_code)
这里返回200表示已经成功。
cookie
cookie在英语中是饼干的意思,这里可以理解为身份。
当我们在访问一个网站的时候会留下一个身份,下次使用时可以看到
url = 'https://www.baidu.com'
result = requests.get(url)
print(result.cookies)
运行结果为
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
requests简单用法——完
这里是引用
无冥冥之志者,无昭昭之明,无昏昏之事者,无赫赫之功
————荀子《劝学》