1.GET请求(不带参数)
# coding:utf-8import requestsr=requests.get("https://www.baidu.com") #r即为responseprint r.text #打印返回的内容,text文本格式print r.status_code #打印返回码
返回结果如下:
ç¾åº¦ä¸ä¸ï¼ä½ å°±ç¥é 200 #状态码 200 只能说明这个接口访问的服务器地址是对的,并不能说明功能 OK,一般要查看响应的 内容 (‘致橡树的你’注释)©2017 Baidu 使ç¨ç¾åº¦åå¿è¯» æè§åé¦ äº¬ICPè¯030173å·
问题:我们发现返回中有部分中文乱码
分析:这是因为百度响应采用了gzip压缩,具体查看可以通过fiddler 在响应终端 transfer中查看
解决方案:使用r.content
知识扩展:response返回的内容获取总结如下
print dir(r)
返回如下:
['__attrs__', '__bool__', '__class__', '__delattr__', '__dict__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__getstate__', '__hash__', '__init__', '__iter__', '__module__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_content', '_content_consumed', '_next', 'apparent_encoding', 'close', 'connection', 'content', 'cookies', 'elapsed', 'encoding', 'headers', 'history', 'is_permanent_redirect', 'is_redirect', 'iter_content', 'iter_lines', 'json', 'links', 'next', 'ok', 'raise_for_status', 'raw', 'reason', 'request', 'status_code', 'text', 'url']
其中:
-- r.status_code | #响应状态码 |
-- r.content | #字节方式的响应体,会自动为你解码 gzip 和 deflate 压缩 |
-- r.headers | #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回 None |
- r.json() | #Requests 中内置的 JSON 解码器 |
-- r.url | # 获取 url |
-- r.encoding | # 编码格式 |
-- r.cookies | # 获取 cookie |
-- r.raw | #返回原始响应体 |
-- r.text | #字符串方式的响应体,会自动根据响应头部的字符编码进行解码 |
-- r.raise_for_status() | #失败请求(非 200 响应)抛出异常 |
2.GET请求(带参数)
如在博客园搜索“致橡树的你”
URL:http://zzk.cnblogs.com/s/blogpost?Keywords=致橡树的你 #?是分隔符,标识问号前面是访问的路径,后面是携带的参数
携带的参数实际“致橡树的你”,即keywords=“致橡树的你博客园”,可以以字典的形式传参:{"Keywords": u"致橡树的你"}
requests中以字典形式传递多个参数的格式如下:{"key1": "value1", "key2": "value2", "key3": "value3"} 带参数的GET请求实例如下: