目录
1, get方法
1-1, 不带参数
1-2, 带参数(params)
1-2-1, 参数为字典
1-2-2, 参数为元组
1-3, 设置headers
1-5, 设置超时时间
1-6, 响应体(Response)
1-6-1, text属性
1-6-2, content属性
1-6-3, json()方法
1-6-4, iter_content()方法
1-6-5, raw属性
1-6-6, 响应头部(headers)
1-6-8, 请求头header
1-6-9, encoding属性
2, POST方法
2-1, 参数为data
2-1-1, data为字典
2-1-2, data为元组
2-2, 参数为json
2-3, 上传文件(files)
2-3-1, 指定文件路径上传
2-3-2, 通过文件对象上传字符串
requests模块是第三方模块, 需要通过pip install requests 命令进行安装
通过get方法, 可请求网页, 返回Response对象
通过request.get(url), 请求指定网页
In [70]: url = r'https://www.baidu.com'
# 访问指定的url网址, 返回一个Response对象
In [71]: r = requests.get(url)
In [151]: r.url
Out[151]: 'https://www.baidu.com/'
params可以是字典或者元组形式
# params为字典格式
In [146]: params1 = {'key1': 'value1', 'key2': 'value2'}
In [147]: r1 = requests.get('http://httpbin.org/get', params=params1)
# r1.url返回url信息
In [148]: r1.url
Out[148]: 'http://httpbin.org/get?key1=value1&key2=value2'
# params中参数值None, 则该参数不会下发
In [184]: params1 = {'key1': 'value1', 'key2': None}
In [185]: r1 = requests.get('http://httpbin.org/get', params=params1)
# 由于key2的值为None,所以url中没有下发key2
In [186]: r1.url
Out[186]: 'http://httpbin.org/get?key1=value1'
# params为元组形式
In [153]: params1 = (('key1', 'value1'), ('key2', 'value2'))
In [154]: r1 = requests.get('http://httpbin.org/get', params=params1)
# 通过r1.url返回url信息
In [155]: r1.url
Out[155]: 'http://httpbin.org/get?key1=value1&key2=value2'
# params中参数值None, 则该参数不会下发
In [156]: params1 = (('key1', 'value1'), ('key2', None))
In [157]: r1 = requests.get('http://httpbin.org/get', params=params1)
In [158]: r1.url
Out[158]: 'http://httpbin.org/get?key1=value1'
通过设置参数headers={'user-agent': 'xxxx'}, 可在定制header进行访问, 加入headers的作用是起到浏览器标识作用,若不加,若访问的网页有反爬虫,则会获取失败
# user-agent将覆盖原始的user-agent值,其他值不变
In [56]: header = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chro
...: me/114.0.5735.289 Safari/537.36'}
In [57]: r = requests.get('https://www.baidu.com', headers=header)
user-agent的获取:F12->网络->请求标头->User-Agent
cookies的作用,可以访问登录后的页面, cookies的值可以是字典或者RequestsCookieJar对象
# 设置cookies={'cookies_are': 'working'}, 访问指定url
In [178]: r = requests.get('http://httpbin.org/cookies', cookies={'cookies_are': 'working'})
# 生成RequestsCookieJar对象
In [179]: jar = requests.cookies.RequestsCookieJar()
# 填入RequestsCookieJar需要的信息
In [180]: jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
Out[180]: Cookie(version=0, name='tasty_cookie', value='yum', port=None, port_specified=False, domain='httpbin.org', domain_specified=True, domain_initial_dot=False, path='/cookies', path_specified=True, secure=False, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)
# 通过cookies=jar, 访问指定url
In [181]: r = requests.get('http://httpbin.org/cookies', cookies=jar)
In [182]: r.cookies
Out[182]:
In [183]: r.json()['cookies']
Out[183]: {'tasty_cookie': 'yum'}
通过timeout='xxx', 设置超时时间, 单位为秒
# 2.5s后超时
In [190]: r = requests.get(r'https://www.baidu.com', timeout=2.5)
通过r.text, 以字符串查看Response对象的内容
# 通过r.text, 以字符串返回Response的内容
In [86]: r.text
Out[86]: '\r\n ...