所需技能:requests 和 json 模块,天行数据网站。了解技能如下。
requests模块介绍:
requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等。
其中返回的网页部分会存在.content
和.text
两个对象中。.text
是现成的字符串,.content
还要编码,但是.text
不是所有时候显示都正常,这时就需要用.content
进行手动编码。
常用方法:
-
requests.get/post('url')
——返回一个Response对象,获取网页 -
requests.text
——默认以unicode形式返回网页内容,也就是网页源码的字符串 -
requests.content
——以字节形式(二进制)返回。字节方式的响应体,会自动解码 gzip 和 deflate 压缩 -
requests.content.decode('utf-8')
——以UTF-8进行编码
json模块介绍:
JSON模块是一种轻量级的数据交换格式。JSON模块的API函数类似pickle模块,主要有序列化的函数
dumps()
和反序列化的函数loads()
。
常用方法:
-
json.loads()
——将字符串的内容反序列化成Python对象
*json.load()
——将⽂件中的json数据反序列化成对象 -
json.dump()
——将Python对象按照json格式序列化到⽂件中
*json.dumps()
——将python对象处理成json格式的字符串
加了s的就是只处理当前文件中的数据,不加s的就是处理其他文件中的数据。
利用天行数据提供的url接口来模拟get请求。
链接如下。
1. 进行GET请求模拟
- 引入相关模块。
import requests # 引入requests模块
import json # 引入json模块
- 在主函数下通过GET方法获取网页信息,并通过
.text
属性转换成网页的源码字符串。
def main():
resp=requests.get('http://api.tianapi.com/txapi/pyqwenan/index?key=APIKEY').text # 获取网页信息,并转换成源码字符串
data_model=json.loads(resp) # 将json格式的字符串转化为python对象
print(data_model)
if __name__='__main__':
main()
url获取方法如下。
2.1 复制请求示例中的url地址到get方法中。
2.2 点击【在线测试】,将网页中的参数值带入到url的APIKEY
中。
- 运行以上代码,显示结果如下。
[ {
“content”: “天亮以后,不管雨是否还在下,我们都收拾好自己,带着笑容,重新出发好不好?”,
“source”: “佚名”
}]
2. 进行POST请求模拟
详细请求步骤与GET请求类似,以下只进行请求时携带的请求头和请求体的说明。
import requests
import json
def main():
# 定义请求体数据
key={
"key":"bd740ddb5c597ebbdad10f385239e910"
}
# 定义请求头数据
header={
"Content-type":"application/x-www-form-urlencoded"
}
# 请求体中的数据放在data中,请求头数据放在headers中
reps=requests.post('http://api.tianapi.com/txapi/pyqwenan/index',headers=header,data=key)
data_model=json.loads(reps.text)
print(data_model)
if __name__=='__main__':
main()