requests库的基本用法

requests库的基本用法

get请求

import requests

r = requests.get('网址')  # 返回一个Response对象它有好几个属性可以参考源码[链接]
						 #(https://requests.readthedocs.io/zh_CN/latest/_modules/requests/models.html#Response)
						 #在这说几个常用的属性
r.text  # 网页的内容(字符串形式)
r.content  # 网页的内容(二进制形式)
r.status_code  # http的响应状态码(知道200为请求成功,其它为请求出现问题即可)
			   #requests中封装了各个响应状态码在requests.codes中。例如:requests.codes.ok(200)
r.raise_for_status  # 如果请求出现错误用它来抛出异常,请求成功则为None。
r.headers  # 响应头
r.encoding  # 判断网页的编码方式,也可以用这个属性来更改编码方式
r.url  # 请求的网址
r.cookie  # 可以访问响应返回的cookie
r.json()  # 如果响应为json则可以用这个方法直接接收

get请求中有一个params参数给它的数据类型为字典类型,它的作用是给url添加查询字符串的。
示例:
在百度搜索Python得到的链接为 https://www.baidu.com/s?ie=UTF-8&wd=Python
?后面的内容就是查询字符串它是以键值对的形式表示的。查询字符串分为两种被动参数和活动参数,被动参数对页面内容没有影响是网站用来访问分析的,附带与不附带没有区别,如上面的:ie=utf-8就是被动参数。活动参数关系到页面的内容,如:wd = Python。因此下面的示例我们需要设置活动参数的键值对就可以了。

import requests

key = input('输入百度搜索关键字\n')
dicts={
    'wd':key
}
headers = 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0'
r = requests.get('http://www.baidu.com/s',params=dicts)
print(r.status_code)
print(r.url)
print(r.text)

结果:
在这里插入图片描述

带请求头的get请求

请求头的作用是告诉被请求的服务器,请求的来源的一些信息。有的网站如果没有请求头可能就会拒绝访问,因为你在明目张胆的告诉人家你是爬虫,正常的浏览器请求都有请求头,包含请求的浏览器是啥,系统是什么等。
注意: 所有的 header 值必须是 string、bytestring 或者 unicode。尽管传递 unicode header 也是允许的,但不建议这样做。

import requests

header = {"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"} 
# 请求头是一个字典

r = requests.get(url='网址',headers=header)
print(r.status_code)
带cookie的get请求

第一种方式

import requests

header = {"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
"cookie":"放网页的rquest的cookie"

} 
# 请求头是一个字典

r = requests.get(url='网址',headers=header)
print(r.status_code)

第二种方式是使用在get请求中加入cookies参数,参数的类型为字典。
r = requests.get(url, cookies=cookies)

post请求

header = {"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36"} 
# 请求头是一个字典

data={
}  # 字典内容从网页查看,必要的输入
r = requests.post('网址',headers=header,data=data)

data传的参数可以是字典、元组列表。
示例:
网址为百度翻译查看network找到post请求发送的内容。
在这里插入图片描述
返回的响应是json格式
在这里插入图片描述

data={
    'kw': "Python"
}

r = requests.post('https://fanyi.baidu.com/sug',headers=header,data=data)
text = r.json()  # 因为返回的响应是json格式所以用json方法接收  
print(text)

结果
使用post请求上传文件

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}  

r = requests.post(url, files=files)
r.text

输出:

{
  ...
  "files": {
    "file": "<censored...binary...data>"
  },
  ...
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值