Python瞎老弟的爬虫心得之requests篇②requests基本使用

上一期已经成功安装了requests模块,并简单的使用了requests,本期,我们将详细介绍requests模块

通过requests发送get请求

直接使用requests.get()方法即可
其中内容将通过requests.text查看

import requests

url = "http://httpbin.org/get"

r = requests.get(url)
print(r.text)

通过requests发送post请求

将get()方法,改为post()即可
其中需要提交的内容,通过data参数传入

import requests

url = "http://httpbin.org/post"

data = {"test": "requests"}

r = requests.post(url, data=data)
print(r.text)

传入url参数

url参数,也即跟在地址后的?后的一串内容

我们可以直接通过url地址将其构造出来

import requests

url = "http://httpbin.org/get?username=xialaodi&password=123456"

r = requests.get(url)
print(r.text)

也可以通过params参数,传入一个字典使用

import requests

url = "http://httpbin.org/get"

payload = {"username": "xialaodi", "password": "123456"}

r = requests.get(url, params=payload)
print(r.text)

可以看出,地址同样被自动构造为

"url": "http://httpbin.org/get?username=xialaodi&password=123456"

这是一种更加容易的传入参数的方法,可以不需要使用

响应内容

r = requests.get(url)

我们得到了一个对象r,这是一个requests.models.Response对象

使用r.text可以得到响应内容

其中解码方式是requests自行猜测的,它会把猜测的结果保存在r.encoding中

使用r.encoding可以得到或者改变编码方式

如果使用r.text得到的内容不正确,可以手动修改r.encoding,然后再使用r.text输出内容

如果不知道正确的编码,可能有人会建议你使用chardet模块来进行编码的测试(该模块需要使用pip安装,目前版本也会随安装requests附带)

使用方法:

import chardet
print(chardet.detect(r.content))
r.encoding = chardet.detect["encoding"]

事实上,现在的requests已经使用了chardet模块,但你仍然可以将chardet用于其他时候使用

使用r.content可以得到二进制的响应内容

使用r.json()可以得到json的响应内容

定制请求头

给headers参数传入一个字典即可

import requests

url = "http://httpbin.org/get"

headers = {"user-agent": "lsp"}
r = requests.get(url, headers=headers)

print(r.text)

如同之前你预想的那样,user-agent会被修改为lsp

状态码和响应头

通过r.status_code可以查看状态码

通过r.headers可以查看响应头

通过r.raise_for_status()可以在状态码为不正常的时候抛出异常

添加超时参数

在请求中添加timeout参数,即可让你的程序在指定的时间内没有得到响应就抛出异常

请求地址,请求历史和重定向

通过r.url可以查看到请求地址

通过r.history可以查看到重定向

通过修改allow_redirects参数为False可以禁止重定向

例如禁止github进行重定向

import requests

url = "http://github.com"

r = requests.get(url, allow_redirects=False)

print(r.status_code)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容