欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

requests 库

程序员文章站 2022-05-08 09:58:31
...

requests库

虽然Python的标准库中 urllib模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests宣传是 “HTTP for Humans”,说明使用更简洁方便。


发送get请求:

发送get请求,直接调用request.get
就可以了。想要发送什么类型的请求,就调用什么方法。


response = requests.get('http://www.baidu.com')


request的一些属性:

 import requests

 kw = {'wd':'中国'}

 headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

 # params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
 response = requests.get("http://www.baidu.com/s", params = kw, headers = headers)

 # 查看响应内容,response.text 返回的是Unicode格式的数据
 print(response.text)

 # 查看响应内容,response.content返回的字节流数据
 print(response.content)

 # 查看完整url地址
 print(response.url)

 # 查看响应头部字符编码
 print(response.encoding)

 # 查看响应码
 print(response.status_code)

request.text 和 request.content 的区别:

1.request.content:这个是直接从网络上面抓取的数据。没有经过任何解码。所以是一个bytes类型。其实在硬盘上和网络上传输的字符串都是bytes类型。
2.request.text:这个是str的数据类型,是request库将request.context进行解码的以有时候可能会猜测错误,就会导致解码产生乱码。这时候就应该使用**request.context.decode(“utf-8”)**进行手动解码。


发送post请求:

发送post请求非常简单。直接调用requests.post()方法就可以了。
如果返回的是json数据。那么可以调用
requests.json()

来将json字符串转为字典或者列表。


使用代理:

在请求方法中,传递proxies参数就可以了


处理cookie:

如果想要在多次请求*享cookie。那么应该使用session。示例代码如下:

import requests


headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
data = {
    'email': '15546406529',
    'password': 'jdeert123'
}
login_url = 'http://www.renren.com/PLogin.do'
dapeng_url = 'http://www.renren.com/880151247/profile'

session = requests.Session()
session.post(login_url,data=data,headers=headers)

response = session.get(dapeng_url)
with open('renren.html','w',encoding='utf-8') as f:
    f.write(response.text)
    print('ok')

相关标签: requests