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/",
    }

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

  • 相关阅读:
    Visual Studio 2019 使用 Web Deploy 发布远程站点到IIS服务器
    postman下载地址
    ASP.NET Core开发-Docker部署运行
    C# ffmpeg 视频处理格式转换具体案例
    C# ffmpeg 视频处理格式转换和添加水印
    C# ffmpeg 视频处理
    Tomcat 安装与配置
    Maven 快速入门
    Jenkins 快速搭建
    Google SRE 读书笔记 扒一扒SRE用的那些工具
  • 原文地址:https://www.cnblogs.com/liangdejiu/p/9145536.html
Copyright © 2011-2022 走看看