requests是python提供的http网络数据请求库,支持cookie,文件上传,会自动实现持久连接keep-alive。
1. 最简单的使用方式:使用get接口获取网络数据
例子1:新浪体育nba网页数据获取
import os
import sys
import requests
#检查url地址,如果正确,返回网页内容
def check_link(url):
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
#print(r.text)
return r.text
except:
print('无法链接服务器!!!')
#main
if __name__ == '__main__':
#新浪体育nba网页数据获取
url='http://sports.sina.com.cn/nba/'
res=check_link(url)
print("res:")
print(res)
res:
<!doctype html>
<!-- [ published at 2021-02-19 22:10:11 ] -->
<!--[if lt IE 7]> <html id="html" class="ie ie6 lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html id="html" class="ie ie7 lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html id="html" class="ie ie8 lt-ie9"> <![endif]-->
<!--[if IE 9]> <html id="html" class="ie ie9"> <![endif]-->
<!--[if gt IE 9]> <html id="html"> <![endif]-->
<!--[if !IE]><!--> <html id="html"> <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<!--<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0,user-scalable=no"/>-->
<meta name="viewport" content="width=1024" />
<title>NBA|新浪NBA|新浪竞技风暴_新浪网</title>
<!--[if lt IE 9]>
<script src="//n.sinaimg.cn/lib/common/html5shiv-printshiv.min.js"></script>
<![endif]-->
<meta name="keywords" content="NBA,NBA季前赛,NBA十佳球,NBA中国赛,NBA常规赛,NBA中国赛,NBA打架,NBA总决赛,,林书豪,库里,勇士,汤普森,三分,姚明,科比,湖人,易建联,麦蒂,麦迪,詹姆斯,韦德,乔丹,保罗,格里芬,尼克斯,火箭,小牛,热火,凯尔特人,NBA全明星,全明星,全明星赛,NBA全明星赛,扣篮大赛,扣篮">
<meta name="description" content="新浪NBA,提供NBA中国赛、NBA常规赛、NBA总决赛、NBA季后赛等;nba十佳球、NBA快讯、NBA视频、NBA图片、NBA赛程、科比火箭等NBA球员球队的NBA数据以及丰富的NBA知识。">
代码说明:
requests.get(url),根据url获取一个requests模块的一个实例,通过requests.text获取网页数据。
2. requests的网络请求接口:
requests.get(url) # GET请求
requests.post(url) # POST请求
requests.put(url) # PUT请求
requests.delete(url) # DELETE请求
requests.head(url) # HEAD请求
requests.options(url) # OPTIONS请求
3. 响应的内容(网络请求返回值):
r.encoding #获取当前的编码
r.encoding = 'utf-8' #设置编码
r.text #以encoding解析返回内容。字符串方式的响应体,会自动根据响应头部的字符编码进行解码。
r.content #以字节形式(二进制)返回。字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩。r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回None
r.status_code #响应状态码
r.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read()
r.ok # 查看r.ok的布尔值便可以知道是否登陆成功
#*特殊方法*#
r.json() #Requests中内置的JSON解码器,以json形式返回,前提返回的内容确保是json格式的,不然解析出错会抛异常
r.raise_for_status() #失败请求(非200响应)抛出异常