Python笔记-----访问网页(requests模块)

http协议包含请求与应答

requests模块

requests模块用于访问网络

一、请求

get请求
requests.get(URL,params,headers...)
  1. 不带参数
import request

requests.get('http://www.baidu.com')
=
requests.request('get','http://www.baidu.com')
  1. 带参数, 参数传递在URL中,并一起发送给服务器
data = {'q': 'python', 'cat': '1001'}
response = requests.get('http://www.douban.com',params = data )
response.url # 实际请求的URL
'https://www.douban.com/search?q=python&cat=1001'
  1. 有headers,传入headers参数来增加请求头中的headers信息
url = 'http://www.baidu.com/s?'
params = {'wd':'长城'}
hearders_info = {'User-Agent':' Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36'}
requests.get(URL=url ,params=params ,headers=headers_info)
post请求

http请求包括三个部分,请求行,请求报头,消息主体。
HTTP协议规定post提交的数据必须放在消息主体中,但是协议并没有规定必须使用什么编码方式。根据请求头中的Content-Type字段,来获知请求中的消息主体是用何种方式进行编码.

具体的编码方式包括:
application/x-www-form-urlencoded
最常见post提交数据的方式,以form表单形式提交数据。
application/json
以json串提交数据。
multipart/form-data
一般使用来上传文件。

  1. form表单形式提交数据
    form表单形式发送post请求,只需要将请求的参数构造成一个字典,然后传给requests.post()的data参数。
requests.post(url,data=data)
  1. json方式发送请求

当前很多api是以json形式提交的,所以在使用post的时候我们可能想提交json数据。

提交json有两步:一是data要编码成json形式(python中的字典形式上和json一样但本质上不一样所以要编码),二是设置“Content-type”头的值为application/json

headers={}
headers['Content-Type']='application/json'   # 一定要设置Content-Type值为application/json
url='https://www.baidu.com'
data={"username":"ls","password":"toor"}
#r = requests.post(url,headers=headers,data=json.dumps(data),verify=False)  #json.dumps把data格式化成json
r = requests.post(url,json=data,verify=False) #或者直接使用json参数代替data,此时requests会自动进行格式化和设置Content-Type头的工作
  1. 上传文件,以multipart方式
    上传文件需要更复杂的编码格式,但是requests把它简化成files参数:
upload_files = {'file': open('report.xls', 'rb')}
 r = requests.post(url, files=upload_files)

二、响应

response = requests.get(url) /requests.post(url)
  1. response.text :返回响应内容,返回的是Unicode格式,通常需要转换为utf-8格式,否则就是乱码
  2. response.content :返回响应内容,返回的是二进制字节流数据(不进行解码,开发者可以根据实际进行某种编码格式进行解码),可以用来保存图片等二进制文件,可以下载视频之类的
  3. response.status_code :返回响应状态码
  4. response.url :返回访问地址url
  5. response.header :返回响应header
  6. response.request.headers :返回请求header
  7. response.cookies :返回cookies
  8. response.json() : 将json格式的数据,进行反序列化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值