zoukankan      html  css  js  c++  java
  • Python爬虫开发系列之三》Requests请求库的使用 Jack

    Requests是一个实用、简单、强大的Python HTTP客户端库,编写爬虫和测试服务器响应数据时经常会用到。Requests 能够完全满足如今网络的需求。接下来我们从最基本的get post 请求开始 到高级特性一步一个脚印去学习。学习是个渐进的过程,只有脚踏实地不断的去练习才能掌握这些重要的知识点。

    一、发送请求 get /post

    按照规例首先要导入Requests模块》》》

    import requests

    r=requests.get('https://www.baidu.com')

    r=requests.post('http://httpbin.org/post',data={'key':'value'})

    以上就短短这么一行代码就完成了get/post请求,漂亮优雅对吧,当然这只是requests的冰山一角。

     

    二、传递参数

    在大型的系统项目中,我们的url不会是这么简单,往往是要传很多查询的参数,一般都是以键值对的方式写在url后面(以get请求为例子),例如https://www.baidu.com/get?key=val&name=Myname

    Requests允许我们使用params关键字使用字典来传参,例如:

    pram={'key1':'val1','key2':'val2'}

    r=requests.get('https://www.baidu.com/get',params=pram)

    print(r.url)---打印出来的是https://www.baidu.com/get?key1=val1&key2=val2

    除了以上我们还可以将一个列表传进去:

    pram={'key1':'val1','key2':'val2','list':[value1,value2]}

    r=requests.get('https://www.baidu.com/get',params=pram)

    print(r.url)---打印出来的是https://www.baidu.com/get?key1=val1&key2=val2&list=value1&list=value2

     以上是关于get请求传参的样例---post传参也是同样操作r=requests.post('https://www.baidu.com/get',data=pram)。

     

    三、获取响应内容

    r=requests.get('https://www.baidu.com/')

    r.text(文本响应内容)或r.content(二进制响应内容)或r.content.json()(json响应内容);在一般情况下获取的图片、mp3.....需要保存为本地文件的时候操作也很简单:如下:

    r=requests.get('https://www.baidu.com/fa.ico')

    with open('fa.ico','wb') as fb:

            fb.write(r.content)

     

    四、定制请求头

    url = 'https://api.github.com/some/endpoint'

    headers = {'user-agent': 'my-app/0.0.1'}

    r = requests.get(url, headers=headers)

     

    五、Cookie

    获取响应信息的Cookie

    url = 'http://example.com/some/cookie/setting/url'

    r = requests.get(url)

    r.cookies['example_cookie_name']

    提交Cookie到服务器

    url = 'http://httpbin.org/cookies'

    cookies = dict(cookies_are='working')

    r = requests.get(url, cookies=cookies)

     

    六、超时

    r=requests.get('http://github.com', timeout=5)

    timeout 仅对连接过程有效,与响应体的下载无关。 timeout 并不是整个下载响应的时间限制,而是如果服务器在 timeout 秒内没有应答,将会引发一个异常(更精确地说,是在 timeout 秒内没有从基础套接字上接收到任何字节的数据时)

     

    --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------完美分隔线

     一、代理

    import requests

    proxies = {
    "http": "http://10.10.1.10:3128",
    "https": "http://10.10.1.10:1080",
    }

    requests.get("http://example.org", proxies=proxies)

    若你的代理需要使用HTTP Basic Auth,可以使用 http://user:password@host/ 语法:

    proxies = {
    "http": "http://user:pass@10.10.1.10:3128/",
    }

    ------------------------------------------------------------------------下一篇将详细介绍解析库的使用敬请期待

  • 相关阅读:
    2021.1.28 个人rating赛补题报告
    2021.1.23 个人rating赛补题报告
    2021.1.23 个人rating赛补题报告
    2020.12.14 个人训练赛补题报告
    2020.11.28 2020团体程序设计天梯赛补题报告
    2020.12.3 Codeforces Beta Round #73(Div2)补题报告
    Xhorse VVDI Prog V5.0.6 is Ready for BCM2 Adapter
    Program 2021 Ford Bronco All Keys Lost using VVDI Key Tool Plus
    Xhorse VVDI Prog V5.0.4 Software Update in July 2021
    How to use Xhorse VVDI2 to Exchange BMW FEM/BDC Module?
  • 原文地址:https://www.cnblogs.com/liangdejiu/p/9145536.html
Copyright © 2011-2022 走看看