zoukankan      html  css  js  c++  java
  • 使用 urllib 构造请求对象

    (1) urllib.request.urlopen()方法可以实现最基本请求的发起,但这几个简单的参数并不足以构建一个完整的请求
    (2) 我们可以使用 urllib.request.Request() 先构造一个请求对象,这个请求对象可以包含请求头信息,或者包含要向服务器传递的数据,然后再发送请求
    (3) 语法:urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False,method=None)
    (4) 其中 url 是要请求的URL,这是必传参数,其他都是可选参数;data 是要向服务器传递的数据,headers 用来构造请求头信息,method 用来指定请求方法

    import urllib.parse
    import urllib.request
    
    url = "http://www.baidu.com/"
    
    headers = {    //定义请求头信息,通常只定义 User-Agent,其他请求头信息可以通过 F12 界面查看
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
    }
    
    postdata = {   //定义要向服务器传递的数据
        'wd': 'hello',
    }
    
    data = bytes(urllib.parse.urlencode(postdata), encoding='utf8')                     //把要传递的数据转换成字节流编码格式
    request = urllib.request.Request(url, data=data, headers=headers, method='POST')    //构造一个请求对象,指定使用POST方式发起请求
    response = urllib.request.urlopen(request)                                          //最后再使用urlopen()发送请求对象
    print(response.read().decode('utf-8'))

         

  • 相关阅读:
    java添加后台缓存
    Acunetix WVS安全测试软件使用教程(入门级)
    spring mvc + ajax上传文件,页面局部刷新
    github新手使用教程
    Junit使用方法
    反射(动态代理)
    TCP--文件上传
    网络编程--UDP通讯
    线程实现计时器,多线程间通信
    序列流
  • 原文地址:https://www.cnblogs.com/pzk7788/p/10531011.html
Copyright © 2011-2022 走看看