Python 标准库 urllib

记录一下urllib 模块的各个方法:

  • urllib.request.urlopen(url,timeout = socket._GLOBAL_DEFAULT_TIMEOUT)
    读取网址的内容,他一般和读取网址的内容一起使用
    返回值是一个可迭代的对象”http.client.HTTPResponse’
    timeout 设置超时时间
  • file.read()
  • file.readline()
  • file.readlines()
    这三个方法放在一起说,
    他们都是用来读取’http.client.HTTPResponse’
    这个对象的内容的,
    • file.read()返回的是网址的全部内容,bytes 类型
    • file.readline() 返回的是网址的一行内容. 每次调用这个方法都会返回下一行的内容 bytes类型
    • file.readlines() 返回的网址的每行内容的一个list列表。list里面也是bytes 类型
  • urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)
    这个方法可以直接把网页保存到本地,filename 是用来存放文件的路径,如果不设置,他会在系统中生成一个临时文件,临时文件的路径可以在这个方法的返回值中查看,reporthook他是用来写callback的 ,是保存完成之后的接口回调, data使用来网络请求是向服务器post参数的

    
        def callback(a, b, c): 
            '''回调函数
            @a: 已经下载的数据块
            @b: 数据块的大小
            @c: 远程文件的大小
            '''  
            pass

    urlretrieve 方法返回的是一个tuple
    (‘./test2/Python-2.7.5.tar.bz2’, http.client.HTTPMessage object at 0x000001B5806A0D68)

  • urllib.urlopen(url).info()
    返回的是一个http.client.HTTPMessage object at 0x000001B5806A0D68
  • urllib.urlopen(url).getcode()
    返回的是一个http的状态码
  • urllib.requset.quote(url)
    url转为URL编码
  • urllib.request.unquote(url)
    URL编码进行转码为utf-8
  • urllib.request.build_opener()
    可以使用这个方法来修改user-agent

    from urllib import request
    
    url = "http://www.baidu.com"
    headers = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
    opener = request.build_opener()
    opener.addheaders = [('User-Agent',headers)]
    file = opener.open(url)
    data = file.read()
  • urllib.request.Request()

    
    import urllib.request
    url = "http://www.baidu.com"
    req = urllib.request.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36')
    data = urllib.request.urlopen(req).read()
  • 设置proxty

    def use_proxy(proxy_addr , url):
        import urllib.request
        proxy  = urllib.request.ProxyHandler({'http':proxy_addr})
        httphd = urllib.request.HTTPHandler(debuglevel=1)
        httpshd= urllib.request.HTTPSHandler(debuglevel=1)
        opener = urllib.request.build_opener(proxy, httphd, httpshd)
        urllib.request.install_opener(opener)
        data   = urllib.request.urlopen(url).read().decode('utf-8')
        return data
    
    proxy_addr = '222.184.112.18:8888'
    data = use_proxy(proxy_addr, "http://www.baidu.com/")
    print(data)  
    

    proxy_addr 可以从 “http://www.xicidaili.com” 来获取

  • 开启DebugLog

    
    import urllib.request
    httphd = urllib.request.HTTPHandler(debuglevel = 1)
    httpshd= urllib.request.HTTPHandler(debuglevel = 1)
    opener = urllib.request.build_opener(httphd, httpshd)
    urllib.request.install_opener(opener)
    data   = urllib.request.urlopen("http://www.baidu.com")

    这个就是一些简单的介绍,其实实际开发的时候我也不经常用这个模块,只是返回来总结总结,实际开发的时候推荐大家使用requests,这个模块的功能比较强大,而且代码量也会更少,我们为什么用python,就是他优雅的写法,以及无比少的代码就能实现强大的功能

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值