requests库的基础使用

项目地址https://github.com/No-96/FengSpider

"""
requests的基础用法
"""
import requests

url_ip = 'http://httpbin.org/ip'
url_github = "https://github.com/timeline.json"
url_headers = 'http://httpbin.org/headers'
url_post = 'http://httpbin.org/post'
url_cookie = 'http://httpbin.org/cookies'
# 发送普通的get请求 
def test1():
    res = requests.get(url_ip)
    print('>>>>>print headers')
    print(res.headers)
    print('>>>>>print response body')
    print(res.text) #以字符串形式查看
    print(res.content) # 以字节的形式查看
    print('状态相应码:',res.status_code)
    print('状态码查询对象:',res.status_code == requests.codes.ok)

# 传递URL参数 
def test2():
    params = {
        'param1':'hello',
        'param2':'world'
    }
    res = requests.get(url_ip,params=params)
    print('>>>>print request url')
    print(res.url)
    print('>>>>>print encoding')
    print(res.encoding)

# json的解析
def test3():
    res = requests.get(url_github)
    data = res.json()
    print(">>>>>>print json")
    print(data)
    print(data['message']) # 打印返回的json中的key为message的value
# 制定请求头
def test4():
    headers = {
        'user-agent':'no-96'
    }
    res = requests.get(url=url_headers,headers=headers)
    print(res.text)
    print(">>>>获取响应头部的信息")
    print(res.headers['content-type'])

# 发送post请求
def test5():
    postdata = {
        'key1':'value1',
        'key2':'value2'
    }
    res = requests.post(url=url_post,data=postdata)
    print(res.text)
# post上传文件
def test6():
    files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
    res = requests.post(url_post,files=files)
    print(res.text)

# cookie
def test7():
    # res = requests.get(url_cookie)
    # print(res.text)
    # 如果response中含有cookie,可以通过res.cookies[example_cookie_name]获取
    # 发送cookie到服务器
    cookies = dict(cookies_are='working')
    res = requests.get(url_cookie,cookies=cookies)
    print(res.text)
def test8():
    #Cookie 的返回对象为 RequestsCookieJar它的行为和字典类似,但界面更为完整,适合跨域名跨路径使用
    jar = requests.cookies.RequestsCookieJar()
    jar.set('tasty_cookie', 'yum', domain='httpbin.org', path='/cookies')
    res = requests.get(url_cookie, cookies=jar)
    print(res.text)
# 重定向
def test9():
    # 可以使用响应对象的 history 方法来追踪重定向。
    # Response.history 是一个 Response 对象的列表,为了完成请求而创建了这些对象。这个对象列表按照从最老到最近的请求进行排序。
    # 例如,Github 将所有的 HTTP 请求重定向到 HTTPS
    r = requests.get('http://github.com')
    print(r.url)
    print(r.history)
    # 可以通过allow_redirects来禁止重定向
    r = requests.get('http://github.com', allow_redirects=False)
    print(r.status_code)
# 超时设置
def test10():
    # 超出时间没有响应的页面将不会被响应
    # timeout 仅对连接过程有效,与响应体的下载无关。 
    # timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,
    # 将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)
    # If no timeout is specified explicitly, requests do not time out.
    try:
        res = requests.get('http://github.com', timeout=0.001)
    except:
        print('超时')
if __name__ == "__main__":
    # test1()
    # test2()
    # test3()
    # test4()
    # test5()
    # test6()
    # test7()
    # test8()
    test10()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值