目录
前言
让 HTTP 服务人类;
requests库简洁优美,相较urllib库更为强大,满足当今web的需求。
准备
1、安装requests库
在命令行中使用pip安装
pip install requests
2、基础的请求方法
get(url, params,**kwargs) | post(url, data, json, **kwargs) | |
参数说明 | url请求地址 params用来拼接查询参数 **kwargs为关键字参数; 可为headers,proxies等参数 | url请求地址 data可为字典,列表,元组,字节等 json 只能为json格式的数据 **kwargs为关键字参数;可以为headers,proxies等参数 |
作用 | 发送 GET 请求到指定 url,向服务器请求数据 | 发送 POST 请求到指定 url,向服务器发送数据,一般是表单数据 |
3、requests请求返回对象的相关属性
使用requests请求返回键的对象为Response,Response对象包含下列常用属性:
content | 返回响应的内容,以字节为单位 |
cookies | 返回一个CookieJar对象,其中包含从服务器发回的cookie |
encoding | 返回用于解码的编码 |
headers | 返回响应头的字典 |
json() | 返回JSON对象结果(如果结果以JSON格式写入,如果不是则引发错误) |
request | 返回请求此响应的请求对象 |
status_code | 返回一个表示状态的数字(200表示正常,404未找到) |
text | 以unicode形式返回响应的内容 |
url | 返回响应的URL |
应用
1、requests.get()
一个简单的请求
代码:
url='https://www.httpbin.org/get'
response=requests.get(url=url)
print(response.encoding,response.text)
结果:
params参数的使用
params参数可以用来拼接查询参数,params要附加到每个请求的查询字符串的字典,字典值是表示多值查询参数
形如:https://www.httpbin.org/get?name=lisa&age=12
代码
url='https://www.httpbin.org/get'
response=requests.get(url=url,params={'name':'Lisa','age':20})
print(response.text)
结果
二进制数据的抓取
抓取二进制数据,适用于抓取图片,音频,视频
测试网站:https://login2.scrape.center/,抓取网站图标
代码
url='https://scrape.center/favicon.ico'
response=requests.get(url=url)
print(response.content)
with open('./favicon.ico','wb') as f:#wb以2进制写入数据
f.write(response.content)
打开favicon.ico,效果如下:
添加请求头
使用headers 参数进行设置
代码
url='https://www.httpbin.org/get'
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.49'}
response=requests.get(url=url,headers=headers)
print(response.text)
结果
2、requests.post()
data参数携带表单数据
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50',}#使用fake_useragent模块随机生成请求头
data={'name':'Lisa','age':20}
resposnse_post=requests.post('https://www.httpbin.org/post',data=data,headers=headers)
print(resposnse_post.text)
json参数携带json格式数据
headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.50',}#使用fake_useragent模块随机生成请求头
json={'name':'Lisa','age':20}
resposnse_post=requests.post('https://www.httpbin.org/post',json=json,headers=headers)
print(resposnse_post.text)