zoukankan      html  css  js  c++  java
  • requeste的使用

    准备工作

    安装requests库

    pip install requests

    初步使用

    获取网页信息直接采用 get() 方法

    import requests

    #get方法发送网址)

    res=requests.get('https://www.csdn.net')

    #查看它的类

    print(type(r))

    #查看状态码

    print(r.status_code)

    #从HTTP header中猜测的响应内容编码方式

    print(r.encoding)

    #打印响应内容类型

    print(type(r.text))

    #HTTP响应内容的字符串形式

    print(r.text)

    #打印cookie

    print(r.cookies)

    HTTP请求

    GET请求

    使用 get() 方法主要用来获取网页信息,就像我们在浏览器里面输入内容然后获得信息。

    基本上没有什么限制,像一些需要登陆后保持Cookies的情况先不说,但是也要满足网站的要求,比如很多网站都需要加上headers信息才能访问,这样能伪装成浏览器

    import requests

    headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
    (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36'
    }
    r = requests.get('https://www.zhihu.com', headers=headers)
    print(r.status_code)
    print(r.text)

    可以直接获取到主页信息,User-Agent字段信息,也就是浏览器标识信息。如果不加这个,知乎会禁止抓取。一般情况下,使用 get() 方法时只要注意好headers信息就好了,针对网站所需要的信息适当选取内容。

    对于params参数,就是请求时附加的额外信息。

    比如,假设要添加两个参数username为name、password为pwd,可以把链接进行更改:http://httpbin.org/get?username=name&password=pwd,与 post() 的data参数是类似的
    POST请求

    使用 post() 方法主要是附加数据再提交,比如表单信息或JSON数据,把信息放在data参数里面。

    可以请求http://httpbin.org/post来看一下情况,该网站会判断如果客户端发起的是POST请求的话,它返回相应的请求信息

    import requests

    data = {'page': 1, 'pwd': s}

    r = requests.post("http://httpbin.org/post", data=data)

    发送JSON数据:
    import json
    import requests

    payload = {'page': 1, 'pwd': 's'}

    r = requests.post("http://httpbin.org/post", data=json.dumps(payload))

    print(r.text)

    Cookies

    如果某个响应包含一些 cookie,可以直接访问它们,比如:

    如果在一个响应中包含了cookie,那么可以利用cookies属性拿到这个返回的cookie值:

    1. import requests 
    2. url = "http://www.renren.com/PLogin.do"
      data = {"email":"970138074@qq.com",'password':"pythonspider"}
    3. resp = requests.get('http://www.baidu.com/')
    4. print(resp.cookies)
    5. print(resp.cookies.get_dict()) 

    要想发送 cookies 到服务器,可以使用 cookies 参数:

    import requests

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

    cookies = dict(cookies_are='working')
    r = requests.get(url, cookies=cookies)

    超时

    可以告诉 requests 在经过以 timeout 参数设定的秒数时间之后停止等待响应。基本上所有的生产代码都应该使用这一参数。如果不使用,程序可能会永远失去响应:

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

    session:

    之前使用urllib库,是可以使用opener发送多个请求,多个请求之间是可以共享cookie的。那么如果使用requests,也要达到共享cookie的目的,那么可以使用requests库给我们提供的session对象。注意,这里的session不是web开发中的那个session,这个地方只是一个会话的对象而已。还是以登录人人网为例,使用requests来实现。示例代码如下:

    import requests

    url = "http://www.renren.com/PLogin.do"

    data = {"email":"970138074@qq.com",'password':"pythonspider"}

    headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"}

    # 登录

    session = requests.session()

    session.post(url,data=data,headers=headers)

    # 访问大鹏个人中心

    resp = session.get('http://www.renren.com/880151247/profile')

    print(resp.text)

    使用代理:

    使用requests添加代理也非常简单,只要在请求的方法中(比如get或者post)传递proxies参数就可以了。示例代码如下:

    import requests

    url = "http://httpbin.org/get"

    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36',}

    proxy = {'http': '171.14.209.180:27829'} 

    resp = requests.get(url,headers=headers,proxies=proxy)

     
     

     

  • 相关阅读:
    转 c#性能优化秘密
    转 the best for wcf client
    迁移到简书通知
    docker初体验
    PyQT 单词弹幕桌面生成!
    Python 常见排序查找算法-二分法,归并,冒泡,插入
    Python 将小姐姐画在Excel上
    TensorFlow基于神经网络实现井字棋
    TensorFlow(八) TensorFlow图像识别(KNN)
    TensorFlow(七) 地址匹配
  • 原文地址:https://www.cnblogs.com/zhifeiji822/p/11983581.html
Copyright © 2011-2022 走看看