注意:本文章的大部分代码案例出自于《Python3 网络爬虫开发实战(第2版)》。
一、GET请求
import requests
res = requests.get('https://www.python.org')
print(type(res)) # <class 'requests.models.Response'>
print(res.status_code) # 200
print(type(res.text)) # <class 'str'>
print(res.text[:150])
print(res.encoding) # utf-8
print(res.headers['content-type']) # application/json; charset=utf8
print(res.cookies) # <RequestsCookieJar[]>
- 扩展:其它请求类型
r = requests.get('http://www.httpbin.org/get')
r = requests.post('http://www.httpbin.org/post')
r = requests.put('http://httpbin.org/put', data = {
'key':'value'})
r = requests.delete('http://www.httpbin.org/delete')
r = requests.patch('http://www.httpbin.org/patch')
1、实例
import requests
r = requests.get('https://www.httpbin.org/get')
print(r.text)
2、params传递参数
import requests
data = {
'name':'germey',
'age':25
}
r = requests.get('https://www.httpbin.org/get',params=data)
print(r.text)
3、JSON 响应内容
import requests
r = requests.get('https://www.httpbin.org/get')
print(type(r.text)) # <class 'str'>
print(r.json())
print(type(r.json())) # <class 'dict'>
返回结果不是JSON格式,会出现解析错误:
import requests
res = requests.get('https://www.baidu.com')
"""
注意,返回结果不是json格式,就会出现解析异常,抛出 json.decoder.JSONDecodeError 异常
"""
print(res.json()) # 报错
4、原始响应内容
import requests
r = requests.get('https://api.github.com/events', stream=True)
print(r.raw.read())
扩展:以下面的模式将文本流保存到文件(下载图片):
r = requests.get('https://docs.python-requests.org/zh_CN/latest/_static/requests-sidebar.png')
with open('requests-sidebar.png',mode='wb') as f:
for chunk in r.iter_content(chunk_size=20):
f.write(chunk)
5、二进制响应内容
import requests
r = requests.get('https://www.sogou.com')
print(r.text) # 抓取文本数据
print(r.content) # 抓取二进制数据
扩展:以二进制的形式,下载图片:
import requests
r = requests.get('https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png')
with open('baidu_logo.png',mode='wb') as f:
f.write(r