python中的requests模块

requests是用python实现的第三方http库。

 

post接口:

结果:

 

还有一个简单的示例:

 

更新:发送请求与传递参数

带参数的get请求

impor  requests

r = requests.get('https://www.baidu.com/') # 最基本的get请求

print r.status_code # 获取返回状态码

r = requests.get('http://dict.baidu.com/s', params={'wd':'shell'})  # 带参数的get请求,说明一下,dict.baidu.com是百度词典主页,可直接写成http://dict.baidu.com/。另外,这里的参数是字典类型

print r.url

---->  https://dict.baidu.com/s?wd=shell

通过网页打开该url,如下

如上图所示,在浏览器地址栏输入:https://dict.baidu.com,然后输入python,通过浏览器的开发者模式查看网页,可以看到 查询字符串参数有3个。请求的url为:https://dict.baidu.com/s?wd=python&device=pc&from=home

这与通过脚本传递参数的get请求的url是不一样的。

print r.text

报错: ERROR (UnicodeEncodeError): 'ascii' codec can't encode character 。。。。。后面省略

解决办法:真实有效

在python的lib\site-packages文件夹下新建一个sitecustomize.py

添加如下内容,设置编码为utf8

# encoding=utf8
import sys

reload(sys)
sys.setdefaultencoding('utf8')

此时重启python解释器,执行sys.getdefaultencoding()(说明,这个不知道怎么执行,我只是执行了sitecustomize.py文件),发现编码已经被设置为utf8的了,多次重启之后,效果相同,这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。

结果:

post请求示例:

import requests
requests.post('http://www.itwhy.org/wp-comments-post.php', data={'comment': '测试POST'})    #POST参数实例

这里的data是字典类型,属于python类型

 

post发送json数据:

import  requests

import json

r = requests.post('https://api.github.com/some/endpoint', data=json.dumps({'some':‘data’}))    # 因为post发送的是json数据,所以需要将python数据转换成json数据,使用json.dumps()函数。

print r.json()

 

定制header

下面的data和headers都用的是字典类型,即python的数据类型。

import requests
import json
 
data = {'some': 'data'}
headers = {'content-type': 'application/json',
           'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0'}
 
r = requests.post('https://api.github.com/some/endpoint', data=data, headers=headers)
print(r.text)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值