zoukankan      html  css  js  c++  java
  • python爬虫之网页的获取requests的使用


    import requests

    response = requests.get("https://www.baidu.com")
    print(type(response))
    print(response.status_code)
    print(type(response.text))
    print(response.text)
    print(response.cookies)
    print(response.content)
    print(response.content.decode("utf-8"))

    关于请求乱码问题:
    不管是通过response.content.decode("utf-8)的方式
    还是通过response.encoding="utf-8"的方式都可以避免乱码的问题发生

    请求:
    GET请求:URL查询字符串传递数据,通常我们会通过httpbin.org/get?key=val方式传递
    data = {
    "name":"zhaofan",
    "age":22
    }
    response = requests.get("http://httpbin.org/get",params=data)

    注:如果字典中的参数为None则不会添加到url上

    解析json:
    requests里面集成的json其实就是执行了json.loads()方法,两者的结果是一样的

    获取二进制数据:
    在上面提到了response.content,这样获取的数据是二进制数据,同样的这个方法
    也可以用于下载图片以及视频资源

    添加请求头(headers):
    headers = {

    "User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
    }
    response =requests.get("https://www.zhihu.com",headers=headers)

    基本POST请求:

    通过在发送post请求时添加一个data参数,这个data参数可以通过字典构造成,这样
    对于发送post请求就非常方便。

    响应:
    可以通过response获得很多属性
    response.status_code 状态码
    response.headers 请求头
    response.cookies cookie
    response.url
    response.history


    requests高级用法
    文件上传
    files= {"files":open("git.jpeg","rb")}
    response = requests.post("http://httpbin.org/post",files=files)
    获取cookie
    for key,value in response.cookies.items():
    print(key+"="+value)
    会话维持
    s = requests.Session()
    s.get("http://httpbin.org/cookies/set/number/123456")
    response = s.get("http://httpbin.org/cookies")
    证书验证
    现在的很多网站都是https的方式访问,所以这个时候就涉及到证书的问题
    利用:verify=False
    response = requests.get("https://www.12306.cn",verify=False)
    代理设置
    proxies= {
    "http":"http://127.0.0.1:9999",
    "https":"http://127.0.0.1:8888"
    }
    response = requests.get("https://www.baidu.com",proxies=proxies)
    如果代理需要设置账户名和密码,只需要将字典更改为如下:
    proxies = {
    "http":"http://user:password@127.0.0.1:9999"
    }
    如果你的代理是通过sokces这种方式则需要pip install "requests[socks]"
    proxies= {
    "http":"socks5://127.0.0.1:9999",
    "https":"sockes5://127.0.0.1:8888"
    }
    超时设置
    通过timeout参数可以设置超时的时间
    认证设置(碰到需要认证的网站)
    from requests.auth import HTTPBasicAuth
    response = requests.get("http://120.27.34.24:9001/",auth=HTTPBasicAuth("user","123"))

    或者
    response = requests.get("http://120.27.34.24:9001/",auth=("user","123"))
    异常处理
    只待江流汲海,万木朝东
  • 相关阅读:
    HDU6808 Go Running(未解决问题
    K
    E
    D
    B
    I
    HDU 2255 奔小康赚大钱 (KM算法模板)
    hdu 1150 Machine Schedule(二分图模板题)
    ACM-ICPC 2018 焦作赛区网络预赛G Give Candies(欧拉降幂)
    ACM-ICPC 2018 焦作赛区网络预赛 L:Poor God Water(杜教BM)
  • 原文地址:https://www.cnblogs.com/wanmudong/p/8073822.html
Copyright © 2011-2022 走看看