zoukankan      html  css  js  c++  java
  • urllib的实现---请求响应and请求头处理

    在python3中 urllib库和urilib2库合并成了urllib库。。
    其中urllib2.urlopen()变成了urllib.request.urlopen()
    urllib2.Request()变成了urllib.request.Request()

     1,实现一个完整的请求和响应模型

    import urllib
    #请求
    request = urllib.request.Request('https://www.baidu,com')
    #响应
    response = urllib.request.urlopen(request)
    html = response.read()
    print(html)
     

    post请求

    import urllib
    from urllib import parse
    from urllib import request
    
    
    url = 'https://www.xxx.com/login'
    postdata = {'username': 'qwe',
                'password': 'qwe123'
    
    }
    #info 需要被编码成urllib 能理解的格式
    data = parse.urlencode(postdata)
    req = request.Request(url,data)
    response = request.urlopen(req)
    html = response.read()

    2.请求头headers处理

    将上面的代码修改,设置一下请求头中的User-Agent域和Referer域信息

    User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

    HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器基此可以获得一些信息用于处理。

    from urllib import parse
    from urllib import request
    
    
    url = 'https://www.xxx.com/login'
    url_agent = 'Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1'
    referer = 'http://www.xxxx.com/'
    postdata = {'username': 'qwe',
                'password': 'qwe123'
    
    }
    header = {'User-Agent': url_agent,'Referer': referer}
    #info 需要被编码成urllib 能理解的格式
    data = parse.urlencode(postdata)
    req = request.Request(url,data,header)
    response = request.urlopen(req)
    html = response.read()

    也可以使用add_header来添加修改如下

    from urllib import parse
    from urllib import request
    
    
    url = 'https://www.xxx.com/login'
    url_agent = 'Mozilla/5.0(Macintosh;IntelMacOSX10.6;rv:2.0.1)Gecko/20100101Firefox/4.0.1'
    referer = 'http://www.xxxx.com/'
    postdata = {'username': 'qwe',
                'password': 'qwe123'
    
    }
    #header = {'User-Agent': url_agent,'Referer': referer}
    #info 需要被编码成urllib 能理解的格式
    data = parse.urlencode(postdata)
    req = request.Request(url)
    req.add_header('User-Agent',url_agent)
    req.add_header('Referer',referer)
    req.data = data
    response = request.urlopen(req)
    html = response.read()

     

  • 相关阅读:
    斜率dp+cdq分治
    踢罐子 [几何+乱搞]
    [HDU3710] Battle Over Cities [树链剖分+线段树+并查集+kruskal+思维]
    [xsy1129] flow [树链剖分和线段树一起优化网络流][我也不知道这是什么鬼标签]
    [CF666E] Forensic Examination [广义后缀自动机+线段树合并]
    省选算法学习-BSGS与exBSGS与二次剩余
    省选算法学习-回文自动机 && 回文树
    省选算法学习-后缀数组+后缀自动机+后缀树
    Password [分块]
    随机过程——泊松过程
  • 原文地址:https://www.cnblogs.com/mrwuzs/p/8018190.html
Copyright © 2011-2022 走看看