zoukankan      html  css  js  c++  java
  • Python爬虫---requests库快速上手

    一、requests库简介

    requests是Python的一个HTTP相关的库

    requests安装:

    pip install requests

    二、GET请求

    import requests   # 首先导入reqeusts模块
    
    res = requests.get(     # 使用requests模拟浏览器发送一个get请求
        url="https://www.baidu.com",   # 指定访问的网址
    )
    
    
    # 打印响应内容:网站的源代码
    print(res.text)
    
    # 打印二进制响应内容;我们在拉取音乐、视频等使用
    print(res.content)
    reqeusts初体验

    我们发送get请求时,如果URL参数需要携带参数,那么数据会以键/值对的方式置于URL中,跟在一个问号的后面,例如:ttps://www.baidu.com/s?wd=hello

    import requests
    
    #get请求,携带参数信息
    #http://httpbin.org/get?key1=value1&key2=value2
    payload = {'key1': 'value1', 'key2': 'value2'}
    r = requests.get("http://httpbin.org/get", params=payload)
    
    print(r.text)
    get请求url携带参数

    你还可以将一个列表作为值传入:

    #http://httpbin.org/get?key1=value1&key2=value2&key2=value3
    payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
    r = requests.get("http://httpbin.org/get", params=payload)
    传输多个值得时候

    三、POST请求

    通常,如果你想要发送一些编码为表单形式得数据的时候,只需要简单的给request的data传递一个字典即可。你的数据在发送请求时会自动编码为表单形式:

    import requests
    
    payload = {'key1': 'value1', 'key2': 'value2'}
    # 类似我们的请求体中的数据
    r = requests.post("http://httpbin.org/post", data=payload)
    
    print(r.text)
    post请求

    很多时候,你想发送出去的数据并非编码为表单形式,如果你想传输一个json字符串,而不是一个字典,那么数据会被直接发送过去

    例如,Github API v3 接受编码为 JSON 的 POST/PATCH 数据:

    import requests
    import json
    
    payload = {'some': 'data'}
    url = 'https://api.github.com/some/endpoint'
    r = requests.post(url, data=json.dumps(payload))
    
    print(r.text)
    post请求发送一个json字符串

    四、requests参数总结

       :param method: 请求方法
        :param url: 目标地址的URL
        :param params: 请求参数:可以是字符串、字节、字典
        :param data:   可以是字典、字符串、字节、文件对象,发送的时候会在请求体中携带
        :param json: 将json中对应的数据进行序列化成一个字符串,在请求体中发送给服务器,并且Content-Type是 {'Content-Type': 'application/json'}
        :param headers: 请求头数据
        :param cookies: 请求携带的cookie
        :param files: 向服务器发送文件数据
        :param auth: Auth tuple以启用基本的/摘要/自定义http auth。
        :param timeout: 等待服务器响应时间,可以是浮点数
        :param allow_redirects: 是否允许自动重定向,True(默认),Flase
        :param proxies: 字典映射协议到代理的URL。
        :param verify: 控制我们是验证服务器的TLS证书,还是字符串,在这种情况下,它必须是CA包的路径才能使用。默认为“True”。
        :param stream: 是否以流的形式读取服务器传来的数据
        :param cert: 如果是字符串,则为SSL客户端证书文件(.pem)的路径。如果是元组,(‘cert’,‘key’)对。

    五、响应

    import requests
    import json
    
    payload = {'some': 'data'}
    url = 'https://api.github.com/some/endpoint'
    r = requests.post(url, data=json.dumps(payload))
    
    # 获取响应头
    print(r.headers)
    print(r.headers['Content-Type'])  # 'application/json'
    print(r.headers.get('content-type'))  # 'application/json'
    
    # 获取响应cookie
    print(r.cookies['example_cookie_name'])
    print(r.cookies.get_dict())
    
    # 获取响应体
    print(r.text)
    # 获取响应体(二进制形式)
    print(r.content)
    
    # 重定向与请求历史
    print(r.url)
    print(r.status_code)  # 响应状态码
    print(r.history)
    
    # json响应内容
    print(r.json())  # [{u'repository': {u'open_issues': 0, u'url': 'https://github.com/...
  • 相关阅读:
    LeetCode 79. 单词搜索
    LeetCode 1143. 最长公共子序列
    LeetCode 55. 跳跃游戏
    LeetCode 48. 旋转图像
    LeetCode 93. 复原 IP 地址
    LeetCode 456. 132模式
    LeetCode 341. 扁平化嵌套列表迭代器
    LeetCode 73. 矩阵置零
    LeetCode 47. 全排列 II
    LeetCode 46. 全排列
  • 原文地址:https://www.cnblogs.com/weihengblog/p/9332576.html
Copyright © 2011-2022 走看看